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