diff --git a/backend/src/main/java/com/goldenchart/service/HistoricalDataService.java b/backend/src/main/java/com/goldenchart/service/HistoricalDataService.java index c9b5c97..c665c26 100644 --- a/backend/src/main/java/com/goldenchart/service/HistoricalDataService.java +++ b/backend/src/main/java/com/goldenchart/service/HistoricalDataService.java @@ -81,9 +81,17 @@ public class HistoricalDataService { rawBars = sliceFromMemory(market, candleType, toTime, safeCount); } - if (rawBars.isEmpty()) { - log.debug("[HistoricalDataService] 업비트 REST 프록시: {} / {} / to={}", market, candleType, to); - rawBars = fetchFromUpbit(market, candleType, to, safeCount); + // 인메모리 봉이 최소 임계치(20개) 미만이면 Upbit REST 로 재조회. + // 백엔드 재시작 직후 warm-up 미완료 상태에서 2~3개 봉만 반환되는 + // race-condition 을 방지한다. + final int MIN_BARS_THRESHOLD = 20; + if (rawBars.size() < Math.min(MIN_BARS_THRESHOLD, safeCount)) { + log.info("[HistoricalDataService] 인메모리 봉 부족({}) → 업비트 REST 프록시: {} / {}", + rawBars.size(), market, candleType); + List upbitBars = fetchFromUpbit(market, candleType, to, safeCount); + if (upbitBars.size() > rawBars.size()) { + rawBars = upbitBars; + } } if (rawBars.isEmpty()) return Collections.emptyList();