This is an automated email from the ASF dual-hosted git repository.

yupeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 3556e7149e Improve segment metadata fetch API (#8128)
3556e7149e is described below

commit 3556e7149e8ae8bc19090f9e92e62f9b32f1f361
Author: Yupeng Fu <yupe...@users.noreply.github.com>
AuthorDate: Mon Apr 11 21:00:30 2022 -0700

    Improve segment metadata fetch API (#8128)
    
    * fix segment metadata fetch API
    
    * typo
    
    * comment
    
    * comments
---
 .../api/resources/PinotSegmentRestletResource.java        | 15 +++++++++++----
 .../controller/api/PinotSegmentRestletResourceTest.java   | 15 +++++++++++++++
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
index 4f2d31d158..1ef10cd5db 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSegmentRestletResource.java
@@ -290,10 +290,17 @@ public class PinotSegmentRestletResource {
       @ApiParam(value = "Name of the table", required = true) 
@PathParam("tableName") String tableName,
       @ApiParam(value = "Name of the segment", required = true) 
@PathParam("segmentName") @Encoded String segmentName) {
     segmentName = URIUtils.decode(segmentName);
-    TableType tableType = SegmentName.isRealtimeSegmentName(segmentName) ? 
TableType.REALTIME : TableType.OFFLINE;
-    String tableNameWithType =
-        
ResourceUtils.getExistingTableNamesWithType(_pinotHelixResourceManager, 
tableName, tableType, LOGGER).get(0);
-    Map<String, String> segmentMetadata = 
getSegmentMetadataInternal(tableNameWithType, segmentName);
+    Map<String, String> segmentMetadata = null;
+    if (TableNameBuilder.getTableTypeFromTableName(tableName) != null) {
+      segmentMetadata = getSegmentMetadataInternal(tableName, segmentName);
+    } else {
+      segmentMetadata = 
getSegmentMetadataInternal(TableNameBuilder.OFFLINE.tableNameWithType(tableName),
 segmentName);
+      if (segmentMetadata == null) {
+        segmentMetadata =
+            
getSegmentMetadataInternal(TableNameBuilder.REALTIME.tableNameWithType(tableName),
 segmentName);
+      }
+    }
+
     if (segmentMetadata != null) {
       return segmentMetadata;
     } else {
diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java
index e205f1e6d9..1ddb263839 100644
--- 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java
@@ -71,6 +71,21 @@ public class PinotSegmentRestletResourceTest {
     // Get crc info from API and check that they are correct.
     checkCrcRequest(segmentMetadataTable, 5);
 
+    // validate the segment metadata
+    Map.Entry<String, SegmentMetadata> entry =
+        (Map.Entry<String, SegmentMetadata>) 
segmentMetadataTable.entrySet().toArray()[0];
+    String resp = ControllerTestUtils.sendGetRequest(
+        
ControllerTestUtils.getControllerRequestURLBuilder().forSegmentMetadata(TABLE_NAME,
 entry.getKey()));
+    Map<String, String> fetchedMetadata = JsonUtils.stringToObject(resp, 
Map.class);
+    Assert.assertEquals(fetchedMetadata.get("segment.download.url"), 
"downloadUrl");
+
+    // use table name with table type
+    resp = 
ControllerTestUtils.sendGetRequest(ControllerTestUtils.getControllerRequestURLBuilder()
+        .forSegmentMetadata(TABLE_NAME + "_OFFLINE", entry.getKey()));
+    fetchedMetadata = JsonUtils.stringToObject(resp, Map.class);
+    Assert.assertEquals(fetchedMetadata.get("segment.download.url"), 
"downloadUrl");
+
+
     // Add more segments
     for (int i = 0; i < 5; i++) {
       SegmentMetadata segmentMetadata = 
SegmentMetadataMockUtils.mockSegmentMetadata(TABLE_NAME);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to