wu-sheng commented on code in PR #10181:
URL: https://github.com/apache/skywalking/pull/10181#discussion_r1051846060


##########
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBTopologyQueryDAO.java:
##########
@@ -123,72 +118,77 @@ List<Call.CallDetail> queryServiceRelation(Duration 
duration,
             timestampRange = new 
TimestampRange(TimeBucket.getTimestamp(startTB), 
TimeBucket.getTimestamp(endTB));
         }
         final String modelName = detectPoint == DetectPoint.SERVER ? 
ServiceRelationServerSideMetrics.INDEX_NAME :
-            ServiceRelationClientSideMetrics.INDEX_NAME;
-        final Map<String, Call.CallDetail> callMap = new HashMap<>();
-        for (final QueryBuilder<MeasureQuery> q : queryBuilderList) {
-            MeasureQueryResponse resp = query(modelName,
-                                              ImmutableSet.of(
-                                                  
ServiceRelationClientSideMetrics.COMPONENT_IDS,
-                                                  Metrics.ENTITY_ID
-                                              ),
-                                              Collections.emptySet(), 
timestampRange, q
-            );
-            if (resp.size() == 0) {
-                continue;
-            }
-            final Call.CallDetail call = new Call.CallDetail();
-            final String entityId = 
resp.getDataPoints().get(0).getTagValue(Metrics.ENTITY_ID);
+                ServiceRelationClientSideMetrics.INDEX_NAME;
+
+        MeasureQueryResponse resp = query(modelName,
+                ImmutableSet.of(
+                        ServiceRelationClientSideMetrics.COMPONENT_IDS,
+                        Metrics.ENTITY_ID
+                ),
+                Collections.emptySet(), timestampRange, queryBuilder
+        );
+        if (resp.size() == 0) {
+            return Collections.emptyList();
+        }
+        List<Call.CallDetail> calls = new ArrayList<>(resp.size());
+        for (final DataPoint dataPoint : resp.getDataPoints()) {
+            final String entityId = dataPoint.getTagValue(Metrics.ENTITY_ID);
             final IntList componentIds = new IntList(
-                
resp.getDataPoints().get(0).getTagValue(ServiceRelationClientSideMetrics.COMPONENT_IDS));
+                    
dataPoint.getTagValue(ServiceRelationClientSideMetrics.COMPONENT_IDS));
+            final Call.CallDetail call = new Call.CallDetail();
             for (int i = 0; i < componentIds.size(); i++) {
                 call.buildFromServiceRelation(entityId, componentIds.get(i), 
detectPoint);
-                callMap.putIfAbsent(entityId, call);
+                calls.add(call);
             }
         }
-        return new ArrayList<>(callMap.values());
+        return calls;
     }
 
     @Override
     public List<Call.CallDetail> 
loadInstanceRelationDetectedAtServerSide(String clientServiceId,
                                                                           
String serverServiceId,
                                                                           
Duration duration) throws IOException {
-        List<QueryBuilder<MeasureQuery>> queryBuilderList = 
buildInstanceRelationsQueries(
-            clientServiceId, serverServiceId);
-        return queryInstanceRelation(duration, queryBuilderList, 
DetectPoint.SERVER);
+        QueryBuilder<MeasureQuery> queryBuilder = buildInstanceRelationsQuery(
+                clientServiceId, serverServiceId);
+        return queryInstanceRelation(duration, queryBuilder, 
DetectPoint.SERVER);
     }
 
     @Override
     public List<Call.CallDetail> 
loadInstanceRelationDetectedAtClientSide(String clientServiceId,
                                                                           
String serverServiceId,
                                                                           
Duration duration) throws IOException {
-        List<QueryBuilder<MeasureQuery>> queryBuilderList = 
buildInstanceRelationsQueries(
-            clientServiceId, serverServiceId);
-        return queryInstanceRelation(duration, queryBuilderList, 
DetectPoint.CLIENT);
+        QueryBuilder<MeasureQuery> queryBuilder = buildInstanceRelationsQuery(
+                clientServiceId, serverServiceId);
+        return queryInstanceRelation(duration, queryBuilder, 
DetectPoint.CLIENT);
     }
 
-    private List<QueryBuilder<MeasureQuery>> 
buildInstanceRelationsQueries(String clientServiceId,
-                                                                           
String serverServiceId) {
-        List<QueryBuilder<MeasureQuery>> queryBuilderList = new ArrayList<>(2);
-        queryBuilderList.add(new QueryBuilder<MeasureQuery>() {
+    private QueryBuilder<MeasureQuery> buildInstanceRelationsQuery(String 
clientServiceId,
+                                                                   String 
serverServiceId) {
+        return new QueryBuilder<MeasureQuery>() {
             @Override
             protected void apply(MeasureQuery query) {
-                
query.and(eq(ServiceInstanceRelationServerSideMetrics.SOURCE_SERVICE_ID, 
clientServiceId))
-                     
.and(eq(ServiceInstanceRelationServerSideMetrics.DEST_SERVICE_ID, 
serverServiceId));
-            }
-        });
+                List<AbstractCriteria> instanceRelationsQueryConditions = new 
ArrayList<>(2);
 
-        queryBuilderList.add(new QueryBuilder<MeasureQuery>() {
-            @Override
-            protected void apply(MeasureQuery query) {
-                
query.and(eq(ServiceInstanceRelationServerSideMetrics.DEST_SERVICE_ID, 
clientServiceId))
-                     
.and(eq(ServiceInstanceRelationServerSideMetrics.SOURCE_SERVICE_ID, 
serverServiceId));
+                instanceRelationsQueryConditions.add(
+                        // source_service_id = clientServiceId AND 
dest_service_id = serverServiceId

Review Comment:
   What is this commented code about?



-- 
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: notifications-unsubscr...@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to