From 22b063098b3edf09b3d622fa9fdbc0ce7d679063 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Tue, 7 Jul 2026 11:56:50 +0800 Subject: [PATCH] Fix RegionGroupCache activation race (#18128) (cherry picked from commit a6c654bde5693a0dc293f153cba9deec87243f60) --- .../manager/load/cache/region/RegionGroupCache.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/region/RegionGroupCache.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/region/RegionGroupCache.java index 0ee3f7d2cf859..f95c8effe4749 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/region/RegionGroupCache.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/region/RegionGroupCache.java @@ -61,7 +61,7 @@ public RegionGroupCache(String database, Set dataNodeIds, boolean isStr * @param newHeartbeatSample The newest RegionHeartbeatSample * @param overwrite Able to overwrite Adding or Removing */ - public void cacheHeartbeatSample( + public synchronized void cacheHeartbeatSample( int dataNodeId, RegionHeartbeatSample newHeartbeatSample, boolean overwrite) { // Only cache sample when the corresponding loadCache exists Optional.ofNullable(regionCacheMap.get(dataNodeId)) @@ -78,7 +78,7 @@ public void cacheHeartbeatSample(int dataNodeId, RegionHeartbeatSample newHeartb * * @param dataNodeId the specified DataNode */ - public void createRegionCache(int dataNodeId) { + public synchronized void createRegionCache(int dataNodeId) { regionCacheMap.put(dataNodeId, new RegionCache()); } @@ -87,7 +87,7 @@ public void createRegionCache(int dataNodeId) { * * @param dataNodeId the specified DataNode */ - public void removeRegionCache(int dataNodeId) { + public synchronized void removeRegionCache(int dataNodeId) { regionCacheMap.remove(dataNodeId); } @@ -95,7 +95,7 @@ public void removeRegionCache(int dataNodeId) { * Update currentStatistics based on the latest NodeHeartbeatSamples that cached in the * slidingWindow. */ - public void updateCurrentStatistics() { + public synchronized void updateCurrentStatistics() { regionCacheMap.values().forEach(regionCache -> regionCache.updateCurrentStatistics(false)); Map regionStatisticsMap = regionCacheMap.entrySet().stream()