chenboat commented on a change in pull request #6567: URL: https://github.com/apache/incubator-pinot/pull/6567#discussion_r598027470
########## File path: pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/assignment/segment/RealtimeSegmentAssignment.java ########## @@ -172,6 +183,39 @@ private void checkReplication(InstancePartitions instancePartitions) { } } + private int getSegmentPartitionId(String segmentName) { + // A fast path if the segmentName is a LLC segment name and we can get the partition id from the name directly. + if (LLCSegmentName.isLowLevelConsumerSegmentName(segmentName)) { + return new LLCSegmentName(segmentName).getPartitionGroupId(); + } + // Otherwise, retrieve the partition id from the segment zk metadata. Currently only realtime segments from upsert + // enabled tables have partition ids in their segment metadata. + RealtimeSegmentZKMetadata segmentZKMetadata = ZKMetadataProvider + .getRealtimeSegmentZKMetadata(_helixManager.getHelixPropertyStore(), _realtimeTableName, segmentName); + Preconditions + .checkState(segmentZKMetadata != null, "Failed to find segment ZK metadata for segment: %s of table: %s", + segmentName, _realtimeTableName); + return getSegmentPartitionIdFromZkMetaData(segmentZKMetadata); + } + + private int getSegmentPartitionIdFromZkMetaData(RealtimeSegmentZKMetadata segmentZKMetadata) { + String segmentName = segmentZKMetadata.getSegmentName(); + Preconditions.checkState(segmentZKMetadata.getPartitionMetadata() != null, + "Segment ZK metadata for segment: %s of table: %s does not contain partition metadata", segmentName, + _realtimeTableName); + + ColumnPartitionMetadata partitionMetadata = + segmentZKMetadata.getPartitionMetadata().getColumnPartitionMap().get(_partitionColumn); + Preconditions.checkState(partitionMetadata != null, + "Segment ZK metadata for segment: %s of table: %s does not contain partition metadata for column: %s", Review comment: good idea. 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org