Jackie-Jiang commented on code in PR #14250:
URL: https://github.com/apache/pinot/pull/14250#discussion_r2294435142


##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -434,14 +434,21 @@ private String 
generateAggregateSegmentMetadataServerURL(String tableNameWithTyp
     return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
   }
 
-  private String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName, List<String> columns,
+  public String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName, List<String> columns,

Review Comment:
   Annotate `columns` as `@Nullable`



##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -506,6 +513,19 @@ private String generateStaleSegmentsServerURL(String 
tableNameWithType, String e
     return String.format("%s/tables/%s/segments/isStale", endpoint, 
tableNameWithType);
   }
 
+  private String generateSegmentsParam(Set<String> values) {
+    String paramsStr = "";
+    if (values == null || values.isEmpty()) {

Review Comment:
   (minor)
   ```suggestion
       if (CollectionUtils.isEmpty(values)) {
   ```



##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -434,14 +434,21 @@ private String 
generateAggregateSegmentMetadataServerURL(String tableNameWithTyp
     return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
   }
 
-  private String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName, List<String> columns,
+  public String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName, List<String> columns,
       String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
     segmentName = URLEncoder.encode(segmentName, StandardCharsets.UTF_8);
     String paramsStr = generateColumnsParam(columns);
     return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint, 
tableNameWithType, segmentName, paramsStr);
   }
 
+  public String generateTableMetadataServerURL(String tableNameWithType, 
List<String> columns,

Review Comment:
   Annotate both `columns` and `segmentsToInclude` as `@Nullable`



##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -434,14 +434,21 @@ private String 
generateAggregateSegmentMetadataServerURL(String tableNameWithTyp
     return String.format("%s/tables/%s/metadata?%s", endpoint, 
tableNameWithType, paramsStr);
   }
 
-  private String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName, List<String> columns,
+  public String generateSegmentMetadataServerURL(String tableNameWithType, 
String segmentName, List<String> columns,
       String endpoint) {
     tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
     segmentName = URLEncoder.encode(segmentName, StandardCharsets.UTF_8);
     String paramsStr = generateColumnsParam(columns);
     return String.format("%s/tables/%s/segments/%s/metadata?%s", endpoint, 
tableNameWithType, segmentName, paramsStr);
   }
 
+  public String generateTableMetadataServerURL(String tableNameWithType, 
List<String> columns,
+      Set<String> segmentsToInclude, String endpoint) {
+    tableNameWithType = URLEncoder.encode(tableNameWithType, 
StandardCharsets.UTF_8);
+    String paramsStr = generateColumnsParam(columns) + 
generateSegmentsParam(segmentsToInclude);

Review Comment:
   If there are both columns and segmentsToInclude, do we need to connect them 
with `&`? We should add a test for it



##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -506,6 +513,19 @@ private String generateStaleSegmentsServerURL(String 
tableNameWithType, String e
     return String.format("%s/tables/%s/segments/isStale", endpoint, 
tableNameWithType);
   }
 
+  private String generateSegmentsParam(Set<String> values) {

Review Comment:
   We can consider passing `prefix` (`"columns="` or `"segments="`) so that the 
same method can be reused by both columns and segments



##########
pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java:
##########
@@ -506,6 +513,19 @@ private String generateStaleSegmentsServerURL(String 
tableNameWithType, String e
     return String.format("%s/tables/%s/segments/isStale", endpoint, 
tableNameWithType);
   }
 
+  private String generateSegmentsParam(Set<String> values) {
+    String paramsStr = "";
+    if (values == null || values.isEmpty()) {
+      return paramsStr;
+    }
+    List<String> params = new ArrayList<>(values.size());
+    for (String value : values) {
+      params.add(String.format("segments=%s", value));

Review Comment:
   Avoid using `String.format()` and directly use `"segments=" + value`



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