diff --git a/backend-java/src/main/java/com/tasteby/service/DaemonScheduler.java b/backend-java/src/main/java/com/tasteby/service/DaemonScheduler.java index d8a9ac3..dad57c1 100644 --- a/backend-java/src/main/java/com/tasteby/service/DaemonScheduler.java +++ b/backend-java/src/main/java/com/tasteby/service/DaemonScheduler.java @@ -3,6 +3,7 @@ package com.tasteby.service; import com.tasteby.domain.DaemonConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @@ -22,6 +23,9 @@ public class DaemonScheduler { private final PipelineService pipelineService; private final CacheService cacheService; + @Value("${app.daemon.enabled:true}") + private boolean instanceEnabled; + public DaemonScheduler(DaemonConfigService daemonConfigService, YouTubeService youTubeService, PipelineService pipelineService, @@ -34,6 +38,10 @@ public class DaemonScheduler { @Scheduled(fixedDelay = 30_000) // Check every 30 seconds public void run() { + // 인스턴스 차원 차단(dev/prod 동일 DB 공유 환경에서 dev 쪽 동시 폴링 방지). + // dev .env: DAEMON_ENABLED=false → 이 인스턴스는 스케줄러 동작 안 함. + // prod: 미설정 → 기본 true. + if (!instanceEnabled) return; try { var config = getConfig(); if (config == null) return; diff --git a/backend-java/src/main/resources/application.yml b/backend-java/src/main/resources/application.yml index 1084fd9..01d5d38 100644 --- a/backend-java/src/main/resources/application.yml +++ b/backend-java/src/main/resources/application.yml @@ -59,6 +59,11 @@ app: cache: ttl-seconds: 600 + daemon: + # 인스턴스 차원 스케줄러 활성화. dev/prod가 같은 DB를 공유하므로 + # dev .env에 DAEMON_ENABLED=false를 설정해 dev 폴링을 끄고 prod만 동작시킨다. + enabled: ${DAEMON_ENABLED:true} + mybatis: mapper-locations: classpath:mybatis/mapper/*.xml config-location: classpath:mybatis/mybatis-config.xml