From 205de674bb9105ab5a2ab8c333e4df22a4f4cfcc Mon Sep 17 00:00:00 2001 From: htlee Date: Tue, 24 Mar 2026 14:20:53 +0900 Subject: [PATCH] =?UTF-8?q?fix(backend):=20=EA=B7=B8=EB=A3=B9=20=ED=8F=B4?= =?UTF-8?q?=EB=A6=AC=EA=B3=A4=20=EC=BA=90=EC=8B=9C=20TTL=205=EB=B6=84=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Caffeine 전역 TTL(2일) 대신 서비스 내 수동 5분 TTL 체크 - 5분마다 DB에서 최신 스냅샷 재조회 보장 --- .../java/gc/mda/kcg/domain/fleet/GroupPolygonService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java b/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java index eb9f289..6e3790f 100644 --- a/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java +++ b/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java @@ -24,6 +24,9 @@ public class GroupPolygonService { private final CacheManager cacheManager; private final ObjectMapper objectMapper; + private static final long CACHE_TTL_MS = 5 * 60_000L; // 5분 + private volatile long lastCacheTime = 0; + private static final String LATEST_GROUPS_SQL = """ SELECT group_type, group_key, group_label, snapshot_time, ST_AsGeoJSON(polygon) AS polygon_geojson, @@ -61,7 +64,9 @@ public class GroupPolygonService { @SuppressWarnings("unchecked") public List getLatestGroups() { Cache cache = cacheManager.getCache(CacheConfig.GROUP_POLYGONS); - if (cache != null) { + long now = System.currentTimeMillis(); + + if (cache != null && (now - lastCacheTime) < CACHE_TTL_MS) { Cache.ValueWrapper wrapper = cache.get("data"); if (wrapper != null) { return (List) wrapper.get(); @@ -72,6 +77,7 @@ public class GroupPolygonService { if (cache != null) { cache.put("data", results); + lastCacheTime = now; } return results; } -- 2.45.2