You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by sn...@apache.org on 2024/02/21 00:32:44 UTC
(pinot) branch master updated: Fix bug to return validDocIDsMetadata from all servers (#12431)
This is an automated email from the ASF dual-hosted git repository.
snlee 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 d0ce68b916 Fix bug to return validDocIDsMetadata from all servers (#12431)
d0ce68b916 is described below
commit d0ce68b9163399f056f424bee9b7bc713fe33ee5
Author: Pratik Tibrewal <ti...@uber.com>
AuthorDate: Wed Feb 21 06:02:37 2024 +0530
Fix bug to return validDocIDsMetadata from all servers (#12431)
* Fix bug to return validDocIDsMetadata from all servers
* Deduping validDocIdsMetadata response
---
.../controller/util/ServerSegmentMetadataReader.java | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java b/pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java
index cc8ea07153..320649c0d1 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/util/ServerSegmentMetadataReader.java
@@ -239,31 +239,36 @@ public class ServerSegmentMetadataReader {
serverToEndpoints.get(serverToSegments.getKey())));
}
+ BiMap<String, String> endpointsToServers = serverToEndpoints.inverse();
+
// request the urls from the servers
CompletionServiceHelper completionServiceHelper =
- new CompletionServiceHelper(_executor, _connectionManager, serverToEndpoints);
+ new CompletionServiceHelper(_executor, _connectionManager, endpointsToServers);
Map<String, String> requestHeaders = Map.of("Content-Type", "application/json");
CompletionServiceHelper.CompletionServiceResponse serviceResponse =
completionServiceHelper.doMultiPostRequest(serverURLsAndBodies, tableNameWithType, false, requestHeaders,
timeoutMs, null);
- List<ValidDocIdsMetadataInfo> validDocIdsMetadataInfos = new ArrayList<>();
+ Map<String, ValidDocIdsMetadataInfo> validDocIdsMetadataInfos = new HashMap<>();
int failedParses = 0;
int returnedServersCount = 0;
for (Map.Entry<String, String> streamResponse : serviceResponse._httpResponses.entrySet()) {
try {
String validDocIdsMetadataList = streamResponse.getValue();
- List<ValidDocIdsMetadataInfo> validDocIdsMetadataInfo =
+ List<ValidDocIdsMetadataInfo> validDocIdsMetadataInfoList =
JsonUtils.stringToObject(validDocIdsMetadataList, new TypeReference<ArrayList<ValidDocIdsMetadataInfo>>() {
});
- validDocIdsMetadataInfos.addAll(validDocIdsMetadataInfo);
+ for (ValidDocIdsMetadataInfo validDocIdsMetadataInfo: validDocIdsMetadataInfoList) {
+ validDocIdsMetadataInfos.put(validDocIdsMetadataInfo.getSegmentName(), validDocIdsMetadataInfo);
+ }
returnedServersCount++;
} catch (Exception e) {
failedParses++;
LOGGER.error("Unable to parse server {} response due to an error: ", streamResponse.getKey(), e);
}
}
+
if (failedParses != 0) {
LOGGER.error("Unable to parse server {} / {} response due to an error: ", failedParses,
serverURLsAndBodies.size());
@@ -281,7 +286,7 @@ public class ServerSegmentMetadataReader {
LOGGER.info("Retrieved validDocIds metadata for {} segments from {} servers.", validDocIdsMetadataInfos.size(),
returnedServersCount);
- return validDocIdsMetadataInfos;
+ return new ArrayList<>(validDocIdsMetadataInfos.values());
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org