This is an automated email from the ASF dual-hosted git repository.

xiangfu0 pushed a commit to branch xiangfu0/codex2/table-size-retention
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to 
refs/heads/xiangfu0/codex2/table-size-retention by this push:
     new d521496c3f7 Use simple long accumulation for table retention size
d521496c3f7 is described below

commit d521496c3f7293c038979e51ee782d10414b25e0
Author: Xiang Fu <[email protected]>
AuthorDate: Thu Oct 8 13:18:43 2026 -0700

    Use simple long accumulation for table retention size
    
    Remove the checked-addition guard and synthetic overflow case. Totals 
beyond Long.MAX_VALUE are outside realistic table sizes.
---
 .../helix/core/retention/RetentionManager.java         |  7 +------
 .../helix/core/retention/RetentionManagerTest.java     | 18 ------------------
 2 files changed, 1 insertion(+), 24 deletions(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/retention/RetentionManager.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/retention/RetentionManager.java
index 8a207a4b72d..4ff5f4b6954 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/retention/RetentionManager.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/retention/RetentionManager.java
@@ -210,12 +210,7 @@ public class RetentionManager extends 
ControllerPeriodicTask<Void> {
         LOGGER.warn("Unknown size for segment: {} in table: {}, skip size 
retention", segmentName, tableNameWithType);
         return false;
       }
-      try {
-        retainedBytes = Math.addExact(retainedBytes, size);
-      } catch (ArithmeticException e) {
-        LOGGER.warn("Segment size overflow for table: {}, skip size 
retention", tableNameWithType);
-        return false;
-      }
+      retainedBytes += size;
       completedSegments.add(metadata);
       completedSegmentSizes.put(segmentName, size);
     }
diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/retention/RetentionManagerTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/retention/RetentionManagerTest.java
index ac6dfced991..89bb50ce1ad 100644
--- 
a/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/retention/RetentionManagerTest.java
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/retention/RetentionManagerTest.java
@@ -1739,24 +1739,6 @@ public class RetentionManagerTest {
     
assertEquals(segments.stream().map(SegmentZKMetadata::getSegmentName).toList(), 
List.of("newest"));
   }
 
-  @Test
-  public void testSizeRetentionSkipsTableWhenSegmentSizeTotalOverflows() {
-    for (TableType tableType : List.of(TableType.OFFLINE, TableType.REALTIME)) 
{
-      TableConfig tableConfig = createSizeRetentionTableConfig(tableType, 
"100B");
-      long now = System.currentTimeMillis();
-      List<SegmentZKMetadata> segments = 
List.of(createSizeRetentionSegment("oldest", Long.MAX_VALUE, now - 1),
-          createSizeRetentionSegment("newest", 1, now));
-      PinotHelixResourceManager resourceManager = 
mock(PinotHelixResourceManager.class);
-      ControllerMetrics metrics = mock(ControllerMetrics.class);
-      RetentionManager retentionManager = 
createSizeRetentionManager(tableConfig, segments, resourceManager, metrics);
-
-      retentionManager.manageSizeBasedRetention(tableConfig);
-
-      verify(resourceManager, never()).deleteSegments(anyString(), anyList());
-      verifySizeRetentionGauge(metrics, tableConfig.getTableName(), 1);
-    }
-  }
-
   @Test
   public void testSizeRetentionSkipsTableWhenActiveMetadataIsMissing() {
     TableConfig tableConfig = 
createSizeRetentionTableConfig(TableType.OFFLINE, "50B");


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to