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

pratik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new f5a8ea5804 Fix deepstore upload retry for infinite retention tables 
(#14406)
f5a8ea5804 is described below

commit f5a8ea58047868bc33db78199210af1cc31c3cd5
Author: Pratik Tibrewal <tibrewalprati...@gmail.com>
AuthorDate: Mon Nov 11 11:26:57 2024 +0530

    Fix deepstore upload retry for infinite retention tables (#14406)
---
 .../realtime/PinotLLCRealtimeSegmentManager.java     | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/realtime/PinotLLCRealtimeSegmentManager.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/realtime/PinotLLCRealtimeSegmentManager.java
index ebd3763cfe..71defdb300 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/realtime/PinotLLCRealtimeSegmentManager.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/realtime/PinotLLCRealtimeSegmentManager.java
@@ -114,6 +114,7 @@ import 
org.apache.pinot.spi.utils.CommonConstants.Segment.Realtime.Status;
 import org.apache.pinot.spi.utils.IngestionConfigUtils;
 import org.apache.pinot.spi.utils.JsonUtils;
 import org.apache.pinot.spi.utils.StringUtil;
+import org.apache.pinot.spi.utils.TimeUtils;
 import org.apache.pinot.spi.utils.builder.TableNameBuilder;
 import org.apache.pinot.spi.utils.retry.RetryPolicies;
 import org.apache.zookeeper.data.Stat;
@@ -1489,20 +1490,19 @@ public class PinotLLCRealtimeSegmentManager {
 
     String realtimeTableName = tableConfig.getTableName();
     String rawTableName = 
TableNameBuilder.extractRawTableName(realtimeTableName);
+    RetentionStrategy retentionStrategy = new 
TimeRetentionStrategy(TimeUnit.MILLISECONDS,
+        TimeUtils.VALID_MAX_TIME_MILLIS);
 
-    // If RetentionStrategy cannot be generated from validationConfig, skip 
uploading the segments
     SegmentsValidationAndRetentionConfig validationConfig = 
tableConfig.getValidationConfig();
-    if (validationConfig.getRetentionTimeUnit() == null || 
validationConfig.getRetentionTimeUnit().isEmpty()
-        || validationConfig.getRetentionTimeValue() == null || 
validationConfig.getRetentionTimeValue().isEmpty()) {
-      return;
+    if (validationConfig.getRetentionTimeUnit() != null && 
!validationConfig.getRetentionTimeUnit().isEmpty()
+        && validationConfig.getRetentionTimeValue() != null && 
!validationConfig.getRetentionTimeValue().isEmpty()) {
+      // Use this retention value to avoid the data racing between segment 
upload and retention management.
+      long retentionMs = 
TimeUnit.valueOf(validationConfig.getRetentionTimeUnit().toUpperCase())
+          .toMillis(Long.parseLong(validationConfig.getRetentionTimeValue()));
+      retentionStrategy = new TimeRetentionStrategy(TimeUnit.MILLISECONDS,
+          retentionMs - 
MIN_TIME_BEFORE_SEGMENT_EXPIRATION_FOR_FIXING_DEEP_STORE_COPY_MILLIS);
     }
 
-    // Use this retention value to avoid the data racing between segment 
upload and retention management.
-    long retentionMs = 
TimeUnit.valueOf(validationConfig.getRetentionTimeUnit().toUpperCase())
-        .toMillis(Long.parseLong(validationConfig.getRetentionTimeValue()));
-    RetentionStrategy retentionStrategy = new 
TimeRetentionStrategy(TimeUnit.MILLISECONDS,
-        retentionMs - 
MIN_TIME_BEFORE_SEGMENT_EXPIRATION_FOR_FIXING_DEEP_STORE_COPY_MILLIS);
-
     PinotFS pinotFS = 
PinotFSFactory.create(URIUtils.getUri(_controllerConf.getDataDir()).getScheme());
 
     // Iterate through LLC segments and upload missing deep store copy by 
following steps:


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to