himanish-star commented on code in PR #15725:
URL: https://github.com/apache/pinot/pull/15725#discussion_r2098470822


##########
pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableViews.java:
##########
@@ -141,28 +146,41 @@ public TableView getExternalView(
   public String getSegmentsStatusDetails(
       @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
       @ApiParam(value = "realtime|offline", required = false) 
@QueryParam("tableType") String tableTypeStr,
+      @ApiParam(value = "Show segments being replaced: true|false", required = 
false)
+      @QueryParam("showReplacedSegments") @DefaultValue("true") boolean 
showReplacedSegments,
       @Context HttpHeaders headers)
       throws JsonProcessingException {
     tableName = DatabaseUtils.translateTableName(tableName, headers);
     TableType tableType = validateTableType(tableTypeStr);
     TableViews.TableView externalView = getTableState(tableName, 
TableViews.EXTERNALVIEW, tableType);
     TableViews.TableView idealStateView = getTableState(tableName, 
TableViews.IDEALSTATE, tableType);
-    List<SegmentStatusInfo> segmentStatusInfoListMap = new ArrayList<>();
-    segmentStatusInfoListMap = getSegmentStatuses(externalView, 
idealStateView);
+
+    Map<String, Map<String, String>> externalViewStateMap = 
getStateMap(externalView);
+    Map<String, Map<String, String>> idealStateMap = 
getStateMap(idealStateView);
+    Set<String> segments = idealStateMap.keySet();
+
+    if (!showReplacedSegments) {
+      SegmentLineage segmentLineage = SegmentLineageAccessHelper
+          .getSegmentLineage(_pinotHelixResourceManager.getPropertyStore(), 
tableName);
+      SegmentLineageUtils
+          .filterSegmentsBasedOnLineageInPlace(segments, segmentLineage);
+    }
+
+    List<SegmentStatusInfo> segmentStatusInfoListMap = 
getSegmentStatuses(externalViewStateMap, idealStateMap);
+
     return JsonUtils.objectToPrettyString(segmentStatusInfoListMap);
   }
 
-  public List<SegmentStatusInfo> getSegmentStatuses(TableViews.TableView 
externalView,
-      TableViews.TableView idealStateView) {
-    Map<String, Map<String, String>> idealStateMap = 
getStateMap(idealStateView);
-    Map<String, Map<String, String>> externalViewMap = 
getStateMap(externalView);
+  public List<SegmentStatusInfo> getSegmentStatuses(Map<String, Map<String, 
String>> externalViewMap,
+      Map<String, Map<String, String>> idealStateMap) {
     List<SegmentStatusInfo> segmentStatusInfoList = new ArrayList<>();
 
-    for (Map.Entry<String, Map<String, String>> entry : 
externalViewMap.entrySet()) {
+    for (Map.Entry<String, Map<String, String>> entry : 
idealStateMap.entrySet()) {
       String segment = entry.getKey();
-      Map<String, String> externalViewEntryValue = entry.getValue();
-      Map<String, String> idealViewEntryValue = idealStateMap.get(segment);
-      if (isErrorSegment(externalViewEntryValue)) {
+      Map<String, String> externalViewEntryValue = 
externalViewMap.get(segment);
+      Map<String, String> idealViewEntryValue = entry.getValue();
+
+      if (externalViewEntryValue == null || 
isErrorSegment(externalViewEntryValue)) {
         segmentStatusInfoList.add(

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: commits-unsubscr...@pinot.apache.org

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

Reply via email to