This is an automated email from the ASF dual-hosted git repository. jackie 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 5da68d7ff0 Improve Retention Manager Segment Lineage Clean Up (#13232) 5da68d7ff0 is described below commit 5da68d7ff0f4d9000a03d38ae72eeabf12c5d97c Author: aishikbh <ais...@startree.ai> AuthorDate: Sun Jun 9 09:53:23 2024 +0530 Improve Retention Manager Segment Lineage Clean Up (#13232) --- .../helix/core/PinotHelixResourceManager.java | 17 ++++++++++------- .../helix/core/retention/RetentionManager.java | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java index 7b2acaab89..c1d25eba16 100644 --- a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java +++ b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java @@ -999,13 +999,16 @@ public class PinotHelixResourceManager { LOGGER.info("Trying to delete segments: {} from table: {} ", segmentNames, tableNameWithType); Preconditions.checkArgument(TableNameBuilder.isTableResource(tableNameWithType), "Table name: %s is not a valid table name with type suffix", tableNameWithType); - HelixHelper.removeSegmentsFromIdealState(_helixZkManager, tableNameWithType, segmentNames); - if (retentionPeriod != null) { - _segmentDeletionManager.deleteSegments(tableNameWithType, segmentNames, - TimeUtils.convertPeriodToMillis(retentionPeriod)); - } else { - TableConfig tableConfig = ZKMetadataProvider.getTableConfig(_propertyStore, tableNameWithType); - _segmentDeletionManager.deleteSegments(tableNameWithType, segmentNames, tableConfig); + + synchronized (getTableUpdaterLock(tableNameWithType)) { + HelixHelper.removeSegmentsFromIdealState(_helixZkManager, tableNameWithType, segmentNames); + if (retentionPeriod != null) { + _segmentDeletionManager.deleteSegments(tableNameWithType, segmentNames, + TimeUtils.convertPeriodToMillis(retentionPeriod)); + } else { + TableConfig tableConfig = ZKMetadataProvider.getTableConfig(_propertyStore, tableNameWithType); + _segmentDeletionManager.deleteSegments(tableNameWithType, segmentNames, tableConfig); + } } return PinotResourceManagerResponse.success("Segment " + segmentNames + " deleted"); } catch (final Exception e) { 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 dac61a3096..53075fc133 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 @@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory; */ public class RetentionManager extends ControllerPeriodicTask<Void> { public static final long OLD_LLC_SEGMENTS_RETENTION_IN_MILLIS = TimeUnit.DAYS.toMillis(5L); - private static final RetryPolicy DEFAULT_RETRY_POLICY = RetryPolicies.exponentialBackoffRetryPolicy(5, 1000L, 2.0f); + private static final RetryPolicy DEFAULT_RETRY_POLICY = RetryPolicies.randomDelayRetryPolicy(20, 100L, 200L); private static final Logger LOGGER = LoggerFactory.getLogger(RetentionManager.class); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org