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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]