Copilot commented on code in PR #16940:
URL: https://github.com/apache/pinot/pull/16940#discussion_r2395705986


##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -430,26 +430,48 @@ public Map<String, TableStaleSegmentResponse> 
getStaleSegmentsFromServer(
     return serverResponses;
   }
 
-  private String generateAggregateSegmentMetadataServerURL(String 
tableNameWithType, List<String> columns,
+  private String generateAggregateSegmentMetadataServerURL(String 
tableNameWithType, @Nullable List<String> columns,
       String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
-    String paramsStr = generateParam(COLUMNS_KEY, columns);
-    return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
+    if (CollectionUtils.isEmpty(columns)) {
+      return String.format("%s/tables/%s/metadata", endpoint, 
tableNameWithType);
+    } else {
+      return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType,
+          generateParam(COLUMNS_KEY, columns));
+    }
   }
 
   public String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName,
       @Nullable List<String> columns, String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
     segmentName = URLEncoder.encode(segmentName, StandardCharsets.UTF_8);
-    String paramsStr = generateParam(COLUMNS_KEY, columns);
-    return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint, 
tableNameWithType, segmentName, paramsStr);
+    if (CollectionUtils.isEmpty(columns)) {
+      return String.format("%s/tables/%s/segments/%s/metadata", endpoint, 
tableNameWithType, segmentName);
+    } else {
+      return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint, 
tableNameWithType, segmentName,
+          generateParam(COLUMNS_KEY, columns));
+    }
   }
 
   public String generateTableMetadataServerURL(String tableNameWithType, 
@Nullable List<String> columns,
-      @Nullable List<String> segmentsToInclude, String endpoint) {
+      @Nullable List<String> segments, String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
-    String paramsStr = generateParam(COLUMNS_KEY, columns) + "&" + 
generateParam(SEGMENTS_KEY, segmentsToInclude);
-    return String.format("%s/tables/%s/segments/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
+    if (CollectionUtils.isEmpty(columns)) {
+      if (CollectionUtils.isEmpty(segments)) {
+        return String.format("%s/tables/%s/metadata", endpoint, 
tableNameWithType);
+      } else {
+        return String.format("%s/tables/%s/segments/metadata?%s", endpoint, 
tableNameWithType,
+            generateParam(SEGMENTS_KEY, segments));
+      }
+    } else {
+      if (CollectionUtils.isEmpty(segments)) {
+        return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType,
+            generateParam(COLUMNS_KEY, columns));

Review Comment:
   Inconsistent API endpoints: when segments is empty, the method returns 
`/tables/{table}/metadata` but when segments is not empty, it returns 
`/tables/{table}/segments/metadata`. Based on the method name 
`generateTableMetadataServerURL` and the parameter name `segments`, it should 
consistently use the `/segments/metadata` endpoint when segments are provided.
   ```suggestion
       if (CollectionUtils.isEmpty(segments)) {
         if (CollectionUtils.isEmpty(columns)) {
           return String.format("%s/tables/%s/metadata", endpoint, 
tableNameWithType);
         } else {
           return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType,
               generateParam(COLUMNS_KEY, columns));
         }
       } else {
         // segments is not empty, always use /segments/metadata endpoint
         if (CollectionUtils.isEmpty(columns)) {
           return String.format("%s/tables/%s/segments/metadata?%s", endpoint, 
tableNameWithType,
               generateParam(SEGMENTS_KEY, segments));
   ```



##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -430,26 +430,48 @@ public Map<String, TableStaleSegmentResponse> 
getStaleSegmentsFromServer(
     return serverResponses;
   }
 
-  private String generateAggregateSegmentMetadataServerURL(String 
tableNameWithType, List<String> columns,
+  private String generateAggregateSegmentMetadataServerURL(String 
tableNameWithType, @Nullable List<String> columns,
       String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
-    String paramsStr = generateParam(COLUMNS_KEY, columns);
-    return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
+    if (CollectionUtils.isEmpty(columns)) {
+      return String.format("%s/tables/%s/metadata", endpoint, 
tableNameWithType);
+    } else {
+      return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType,
+          generateParam(COLUMNS_KEY, columns));
+    }
   }
 
   public String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName,
       @Nullable List<String> columns, String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
     segmentName = URLEncoder.encode(segmentName, StandardCharsets.UTF_8);
-    String paramsStr = generateParam(COLUMNS_KEY, columns);
-    return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint, 
tableNameWithType, segmentName, paramsStr);
+    if (CollectionUtils.isEmpty(columns)) {
+      return String.format("%s/tables/%s/segments/%s/metadata", endpoint, 
tableNameWithType, segmentName);
+    } else {
+      return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint, 
tableNameWithType, segmentName,
+          generateParam(COLUMNS_KEY, columns));
+    }
   }
 
   public String generateTableMetadataServerURL(String tableNameWithType, 
@Nullable List<String> columns,
-      @Nullable List<String> segmentsToInclude, String endpoint) {
+      @Nullable List<String> segments, String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
-    String paramsStr = generateParam(COLUMNS_KEY, columns) + "&" + 
generateParam(SEGMENTS_KEY, segmentsToInclude);
-    return String.format("%s/tables/%s/segments/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
+    if (CollectionUtils.isEmpty(columns)) {
+      if (CollectionUtils.isEmpty(segments)) {
+        return String.format("%s/tables/%s/metadata", endpoint, 
tableNameWithType);
+      } else {
+        return String.format("%s/tables/%s/segments/metadata?%s", endpoint, 
tableNameWithType,
+            generateParam(SEGMENTS_KEY, segments));
+      }
+    } else {
+      if (CollectionUtils.isEmpty(segments)) {
+        return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType,
+            generateParam(COLUMNS_KEY, columns));
+      } else {
+        return String.format("%s/tables/%s/segments/metadata?%s&%s", endpoint, 
tableNameWithType,
+            generateParam(COLUMNS_KEY, columns), generateParam(SEGMENTS_KEY, 
segments));
+      }

Review Comment:
   Inconsistent API endpoints: when segments is empty, the method returns 
`/tables/{table}/metadata` but when segments is not empty, it returns 
`/tables/{table}/segments/metadata`. Based on the method name 
`generateTableMetadataServerURL` and the parameter name `segments`, it should 
consistently use the `/segments/metadata` endpoint when segments are provided.
   ```suggestion
       if (CollectionUtils.isEmpty(segments)) {
         if (CollectionUtils.isEmpty(columns)) {
           return String.format("%s/tables/%s/metadata", endpoint, 
tableNameWithType);
         } else {
           return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType,
               generateParam(COLUMNS_KEY, columns));
         }
       } else {
         // segments is not empty, always use /segments/metadata
         StringBuilder url = new 
StringBuilder(String.format("%s/tables/%s/segments/metadata?", endpoint, 
tableNameWithType));
         boolean hasParam = false;
         if (!CollectionUtils.isEmpty(columns)) {
           url.append(generateParam(COLUMNS_KEY, columns));
           hasParam = true;
         }
         if (!CollectionUtils.isEmpty(segments)) {
           if (hasParam) {
             url.append("&");
           }
           url.append(generateParam(SEGMENTS_KEY, segments));
         }
         return url.toString();
   ```



-- 
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]

Reply via email to