Jackie-Jiang commented on code in PR #8667:
URL: https://github.com/apache/pinot/pull/8667#discussion_r869768432
##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java:
##########
@@ -3396,6 +3398,42 @@ private void updateSegmentLineageEntryToReverted(String
tableNameWithType, Segme
System.currentTimeMillis()));
}
+ private List<String> deleteOrUpdateSegmentLineageEntryToReverted(String
tableNameWithType,
+ SegmentLineage segmentLineage, String segmentLineageEntryId,
LineageEntry lineageEntry,
+ List<String> newSegments) {
+ // Check that all segments from 'segmentsFrom' are in ONLINE state in the
external view.
+ Set<String> onlineSegments =
getOnlineSegmentsFromExternalView(tableNameWithType);
+
Preconditions.checkArgument(onlineSegments.containsAll(lineageEntry.getSegmentsFrom()),
String.format(
+ "Failed to update the lineage to be 'REVERTED'. Not all segments from
'segmentFrom' are in ONLINE state "
+ + "in the external view. (tableName = '%s', segmentsFrom = '%s',
onlineSegments = '%s'", tableNameWithType,
+ lineageEntry.getSegmentsFrom(), onlineSegments));
+
+ // Delete or update segmentsTo of the entry to revert to handle the case
of rerunning the protocol:
+ // Initial state:
+ // Entry1: { segmentsFrom: [s1, s2], segmentsTo: [s3, s4], status:
IN_PROGRESS}
+ // 1. Rerunning the protocol with s4 and s5, s4 should not be deleted to
avoid race conditions of concurrent data
+ // pushes and deletions:
+ // Entry1: { segmentsFrom: [s1, s2], segmentsTo: [s3], status: REVERTED}
+ // Entry2: { segmentsFrom: [s1, s2], segmentsTo: [s4, s5], status:
IN_PROGRESS}
+ // 2. Rerunning the protocol with s3 and s4, we can simply remove the
'IN_PROGRESS' entry:
+ // Entry2: { segmentsFrom: [s1, s2], segmentsTo: [s3, s4], status:
IN_PROGRESS}
+ List<String> segmentsToForEntryToRevert = new
ArrayList<>(lineageEntry.getSegmentsTo());
+ if (newSegments != null) {
Review Comment:
(minor) This check is redundant
--
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]