somandal commented on code in PR #16341:
URL: https://github.com/apache/pinot/pull/16341#discussion_r2211378529
##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -489,6 +535,27 @@ private RebalanceResult doRebalance(TableConfig
tableConfig, RebalanceConfig reb
minAvailableReplicas = numCurrentAssignmentReplicas;
}
+ // Don't allow rebalance if peer-download is enabled but
minAvailableReplicas = 0 (which is similar to downtime
+ // rebalance where we can drop to 0 replicas during rebalance)
+ if (minAvailableReplicas == 0
+ &&
!StringUtils.isEmpty(tableConfig.getValidationConfig().getPeerSegmentDownloadScheme()))
{
+ if (!forceDowntime) {
+ // Don't allow minAvailableReplicas=0 rebalance if peer-download is
enabled, as it can result in data loss.
+ // The best way to rebalance peer-download enabled tables is to:
+ // - Ensure that all segments have their deep-store copy available
+ // - Pause ingestion to prevent the creation of new segments during
rebalance
+ // - set forceDowntime=true and re-try running the rebalance
+ String errorMsg = "Peer-download enabled tables with cannot set
minAvailableReplicas=0 for rebalance due to "
+ + "the potential for data loss, validate all segments exist in
deep store and pause ingestion prior to "
+ + "setting forceDowntime=true to override the downtime flag";
+ tableRebalanceLogger.error(errorMsg);
+ return new RebalanceResult(rebalanceJobId,
RebalanceResult.Status.FAILED, errorMsg, instancePartitionsMap,
Review Comment:
done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]