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