wu-sheng closed pull request #1736: Fixed the bug from topology. URL: https://github.com/apache/incubator-skywalking/pull/1736
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/EndpointInventoryCache.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/EndpointInventoryCache.java index 5e7ff6552..eb178a4ea 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/EndpointInventoryCache.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/EndpointInventoryCache.java @@ -37,15 +37,21 @@ private static final Logger logger = LoggerFactory.getLogger(EndpointInventoryCache.class); private final ModuleManager moduleManager; + private final EndpointInventory userEndpoint; + private final Cache<String, Integer> endpointNameCache = CacheBuilder.newBuilder().initialCapacity(5000).maximumSize(100000).build(); + + private final Cache<Integer, EndpointInventory> endpointIdCache = CacheBuilder.newBuilder().initialCapacity(5000).maximumSize(100000).build(); + private IEndpointInventoryCacheDAO cacheDAO; public EndpointInventoryCache(ModuleManager moduleManager) { this.moduleManager = moduleManager; - } - private final Cache<String, Integer> endpointNameCache = CacheBuilder.newBuilder().initialCapacity(5000).maximumSize(100000).build(); - - private final Cache<Integer, EndpointInventory> endpointIdCache = CacheBuilder.newBuilder().initialCapacity(5000).maximumSize(100000).build(); + this.userEndpoint = new EndpointInventory(); + this.userEndpoint.setSequence(Const.USER_ENDPOINT_ID); + this.userEndpoint.setName(Const.USER_CODE); + this.userEndpoint.setServiceId(Const.USER_SERVICE_ID); + } private IEndpointInventoryCacheDAO getCacheDAO() { if (isNull(cacheDAO)) { @@ -69,6 +75,10 @@ public int getEndpointId(int serviceId, String endpointName) { } public EndpointInventory get(int endpointId) { + if (Const.USER_ENDPOINT_ID == endpointId) { + return userEndpoint; + } + EndpointInventory endpointInventory = endpointIdCache.getIfPresent(endpointId); if (isNull(endpointInventory)) { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInstanceInventoryCache.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInstanceInventoryCache.java index 777c57486..5fc05aaf4 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInstanceInventoryCache.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInstanceInventoryCache.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.storage.StorageModule; import org.apache.skywalking.oap.server.core.storage.cache.IServiceInstanceInventoryCacheDAO; import org.apache.skywalking.oap.server.library.module.*; +import org.apache.skywalking.oap.server.library.util.BooleanUtils; import org.slf4j.*; import static java.util.Objects.isNull; @@ -36,6 +37,7 @@ private static final Logger logger = LoggerFactory.getLogger(ServiceInstanceInventoryCache.class); + private final ServiceInstanceInventory userServiceInstance; private final Cache<Integer, ServiceInstanceInventory> serviceInstanceIdCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); private final Cache<String, Integer> serviceInstanceNameCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); @@ -47,6 +49,12 @@ public ServiceInstanceInventoryCache(ModuleManager moduleManager) { this.moduleManager = moduleManager; + + this.userServiceInstance = new ServiceInstanceInventory(); + this.userServiceInstance.setSequence(Const.USER_INSTANCE_ID); + this.userServiceInstance.setName(Const.USER_CODE); + this.userServiceInstance.setServiceId(Const.USER_SERVICE_ID); + this.userServiceInstance.setIsAddress(BooleanUtils.FALSE); } private IServiceInstanceInventoryCacheDAO getCacheDAO() { @@ -57,6 +65,10 @@ private IServiceInstanceInventoryCacheDAO getCacheDAO() { } public ServiceInstanceInventory get(int serviceInstanceId) { + if (Const.USER_INSTANCE_ID == serviceInstanceId) { + return userServiceInstance; + } + ServiceInstanceInventory serviceInstanceInventory = serviceInstanceIdCache.getIfPresent(serviceInstanceId); if (Objects.isNull(serviceInstanceInventory)) { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInventoryCache.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInventoryCache.java index 8571a6340..4aa798c61 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInventoryCache.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/cache/ServiceInventoryCache.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.storage.StorageModule; import org.apache.skywalking.oap.server.core.storage.cache.IServiceInventoryCacheDAO; import org.apache.skywalking.oap.server.library.module.*; +import org.apache.skywalking.oap.server.library.util.BooleanUtils; import org.slf4j.*; import static java.util.Objects.*; @@ -36,6 +37,7 @@ private static final Logger logger = LoggerFactory.getLogger(ServiceInventoryCache.class); + private final ServiceInventory userService; private final Cache<String, Integer> serviceNameCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build(); private final Cache<String, Integer> addressIdCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build(); private final Cache<Integer, ServiceInventory> serviceIdCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build(); @@ -45,6 +47,11 @@ public ServiceInventoryCache(ModuleManager moduleManager) { this.moduleManager = moduleManager; + + this.userService = new ServiceInventory(); + this.userService.setSequence(Const.USER_SERVICE_ID); + this.userService.setName(Const.USER_CODE); + this.userService.setIsAddress(BooleanUtils.FALSE); } private IServiceInventoryCacheDAO getCacheDAO() { @@ -79,6 +86,14 @@ public int getServiceId(int addressId) { } public ServiceInventory get(int serviceId) { + if (logger.isDebugEnabled()) { + logger.debug("Get service by id {} from cache", serviceId); + } + + if (Const.USER_SERVICE_ID == serviceId) { + return userService; + } + ServiceInventory serviceInventory = serviceIdCache.getIfPresent(serviceId); if (isNull(serviceInventory)) { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyBuilder.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyBuilder.java index a933a5082..5cdcdab3d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyBuilder.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyBuilder.java @@ -78,6 +78,11 @@ Topology build(List<ServiceComponent> serviceComponents, List<ServiceMapping> se serviceNode.setId(source.getSequence()); serviceNode.setName(source.getName()); serviceNode.setType(nodeCompMap.getOrDefault(source.getSequence(), Const.UNKNOWN)); + if (BooleanUtils.valueToBoolean(source.getIsAddress())) { + serviceNode.setReal(false); + } else { + serviceNode.setReal(true); + } nodes.add(serviceNode); } @@ -88,6 +93,7 @@ Topology build(List<ServiceComponent> serviceComponents, List<ServiceMapping> se call.setTarget(actualTargetId); call.setCallType(nodeCompMap.get(clientCall.getTarget())); call.setId(clientCall.getId()); + call.setDetectPoint(DetectPoint.CLIENT); calls.add(call); }); @@ -101,6 +107,7 @@ Topology build(List<ServiceComponent> serviceComponents, List<ServiceMapping> se visualUserNode.setId(source.getSequence()); visualUserNode.setName(Const.USER_CODE); visualUserNode.setType(Const.USER_CODE.toUpperCase()); + visualUserNode.setReal(false); nodes.add(visualUserNode); nodeIds.add(source.getSequence()); } @@ -112,6 +119,7 @@ Topology build(List<ServiceComponent> serviceComponents, List<ServiceMapping> se conjecturalNode.setId(source.getSequence()); conjecturalNode.setName(source.getName()); conjecturalNode.setType(conjecturalNodeCompMap.getOrDefault(target.getSequence(), Const.UNKNOWN)); + conjecturalNode.setReal(true); nodeIds.add(source.getSequence()); nodes.add(conjecturalNode); } @@ -121,6 +129,7 @@ Topology build(List<ServiceComponent> serviceComponents, List<ServiceMapping> se call.setSource(source.getSequence()); call.setTarget(target.getSequence()); call.setId(serverCall.getId()); + call.setDetectPoint(DetectPoint.SERVER); if (source.getSequence() == Const.USER_SERVICE_ID) { call.setCallType(Const.EMPTY_STRING); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyQueryService.java index 3ba322f01..06be80dfc 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyQueryService.java @@ -98,7 +98,7 @@ public Topology getServiceTopology(final Step step, final long startTB, final lo List<Call> serviceRelationServerCalls = getTopologyQueryDAO().loadSpecifiedServerSideServiceRelations(step, startTB, endTB, serviceIdList); TopologyBuilder builder = new TopologyBuilder(moduleManager); - Topology topology = builder.build(serviceComponents, serviceMappings, serviceRelationClientCalls, serviceRelationServerCalls); + Topology topology = builder.build(serviceComponents, new ArrayList<>(), serviceRelationClientCalls, serviceRelationServerCalls); Set<Integer> nodeIds = new HashSet<>(); topology.getCalls().forEach(call -> { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterDistinctWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterDistinctWorker.java index 6227a4dc7..4a677cecf 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterDistinctWorker.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterDistinctWorker.java @@ -38,7 +38,7 @@ private final Map<RegisterSource, RegisterSource> sources; private int messageNum; - public RegisterDistinctWorker(int workerId, AbstractWorker<RegisterSource> nextWorker) { + RegisterDistinctWorker(int workerId, AbstractWorker<RegisterSource> nextWorker) { super(workerId); this.nextWorker = nextWorker; this.sources = new HashMap<>(); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java index eb94d665e..c4283f0d4 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java @@ -39,7 +39,7 @@ private final IRegisterLockDAO registerLockDAO; private final IRegisterDAO registerDAO; - public RegisterPersistentWorker(int workerId, String modelName, ModuleManager moduleManager, + RegisterPersistentWorker(int workerId, String modelName, ModuleManager moduleManager, IRegisterDAO registerDAO, Scope scope) { super(workerId); this.modelName = modelName; diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ConsumerMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ConsumerMock.java index 9d33e919d..f91d4a207 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ConsumerMock.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ConsumerMock.java @@ -40,8 +40,8 @@ void mock(StreamObserver<UpstreamSegment> streamObserver, UniqueId.Builder globa private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId, boolean isPrepare) { TraceSegmentObject.Builder segment = TraceSegmentObject.newBuilder(); segment.setTraceSegmentId(segmentId); - segment.setApplicationId(1); - segment.setApplicationInstanceId(1); + segment.setApplicationId(2); + segment.setApplicationInstanceId(2); segment.addSpans(createEntrySpan(startTimestamp, isPrepare)); segment.addSpans(createLocalSpan(startTimestamp, isPrepare)); segment.addSpans(createMqEntrySpan(startTimestamp, isPrepare)); @@ -64,7 +64,7 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId if (isPrepare) { span.setOperationName("/dubbox-case/case/dubbox-rest"); } else { - span.setOperationNameId(1); + span.setOperationNameId(2); } span.setIsError(false); return span; @@ -80,7 +80,7 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId if (isPrepare) { span.setOperationName("org.apache.skywalking.Local.do"); } else { - span.setOperationNameId(2); + span.setOperationNameId(3); } span.setIsError(false); return span; @@ -98,7 +98,7 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId if (isPrepare) { span.setOperationName("org.apache.skywalking.RocketMQ"); } else { - span.setOperationNameId(3); + span.setOperationNameId(4); } span.setIsError(false); return span; @@ -117,8 +117,8 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId span.setPeer("172.25.0.4:20880"); span.setOperationName("org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); } else { - span.setOperationNameId(4); - span.setPeerId(2); + span.setOperationNameId(5); + span.setPeerId(3); } span.setIsError(false); return span; @@ -136,7 +136,7 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId if (isPrepare) { span.setOperationName("org.apache.skywalking.RocketMQ"); } else { - span.setOperationNameId(3); + span.setOperationNameId(4); } span.setIsError(false); return span; @@ -155,8 +155,8 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId span.setPeer("172.25.0.4:20880"); span.setOperationName("org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); } else { - span.setOperationNameId(4); - span.setPeerId(2); + span.setOperationNameId(5); + span.setPeerId(3); } span.setIsError(false); return span; diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ProviderMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ProviderMock.java index 5b353c92b..42bb3b168 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ProviderMock.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ProviderMock.java @@ -41,8 +41,8 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId UniqueId.Builder parentTraceSegmentId, boolean isPrepare) { TraceSegmentObject.Builder segment = TraceSegmentObject.newBuilder(); segment.setTraceSegmentId(segmentId); - segment.setApplicationId(2); - segment.setApplicationInstanceId(2); + segment.setApplicationId(3); + segment.setApplicationInstanceId(3); segment.addSpans(createExitSpan(startTimestamp, isPrepare)); segment.addSpans(createEntrySpan(startTimestamp, parentTraceSegmentId, isPrepare)); @@ -52,9 +52,9 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId private TraceSegmentReference.Builder createReference(UniqueId.Builder parentTraceSegmentId, boolean isPrepare) { TraceSegmentReference.Builder reference = TraceSegmentReference.newBuilder(); reference.setParentTraceSegmentId(parentTraceSegmentId); - reference.setParentApplicationInstanceId(1); + reference.setParentApplicationInstanceId(2); reference.setParentSpanId(1); - reference.setEntryApplicationInstanceId(1); + reference.setEntryApplicationInstanceId(2); reference.setRefType(RefType.CrossProcess); if (isPrepare) { @@ -62,9 +62,9 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId reference.setNetworkAddress("172.25.0.4:20880"); reference.setEntryServiceName("/dubbox-case/case/dubbox-rest"); } else { - reference.setParentServiceId(1); - reference.setNetworkAddressId(2); - reference.setEntryServiceId(1); + reference.setParentServiceId(2); + reference.setNetworkAddressId(3); + reference.setEntryServiceId(2); } return reference; } @@ -84,8 +84,8 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId span.setOperationName("mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"); span.setPeer("localhost:27017"); } else { - span.setOperationNameId(5); - span.setPeerId(1); + span.setOperationNameId(6); + span.setPeerId(2); } return span; } @@ -105,7 +105,7 @@ private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId if (isPrepare) { span.setOperationName("org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); } else { - span.setOperationNameId(6); + span.setOperationNameId(7); } return span; } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java index 3e9915a61..b9514c9ec 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java @@ -19,7 +19,6 @@ package org.apache.skywalking.oap.server.receiver.trace.mock; import io.grpc.ManagedChannel; -import java.util.UUID; import java.util.concurrent.*; import org.apache.skywalking.apm.network.language.agent.*; import org.apache.skywalking.apm.util.RunnableWithExceptionProtection; @@ -59,7 +58,7 @@ private void registerConsumer() throws InterruptedException { ApplicationInstance.Builder instance = ApplicationInstance.newBuilder(); instance.setApplicationId(applicationMapping.getApplication().getValue()); - instance.setAgentUUID(UUID.randomUUID().toString()); + instance.setAgentUUID("pengys"); instance.setRegisterTime(new DateTime("2017-01-01T00:01:01.001").getMillis()); OSInfo.Builder osInfo = OSInfo.newBuilder(); @@ -104,7 +103,7 @@ private void registerProvider() throws InterruptedException { ApplicationInstance.Builder instance = ApplicationInstance.newBuilder(); instance.setApplicationId(applicationMapping.getApplication().getValue()); - instance.setAgentUUID(UUID.randomUUID().toString()); + instance.setAgentUUID("peng-yongsheng"); instance.setRegisterTime(new DateTime("2017-01-01T00:01:01.001").getMillis()); OSInfo.Builder osInfo = OSInfo.newBuilder(); diff --git a/oap-server/server-starter/src/main/resources/log4j2.xml b/oap-server/server-starter/src/main/resources/log4j2.xml index a6ce5a263..2bb72264c 100644 --- a/oap-server/server-starter/src/main/resources/log4j2.xml +++ b/oap-server/server-starter/src/main/resources/log4j2.xml @@ -20,7 +20,7 @@ <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> - <PatternLayout charset="UTF-8" pattern="%d - %c -%-4r [%t] %-5p %x - %m%n"/> + <PatternLayout charset="UTF-8" pattern="%d - %c - %L [%t] %-5p %x - %m%n"/> </Console> </Appenders> <Loggers> diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java index 13c6711dc..1790854e7 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RegisterEsDAO.java @@ -91,7 +91,7 @@ private int getResponse(String modelName, SearchSourceBuilder searchSourceBuilde int id = (int)agg.getValue(); if (id == Integer.MAX_VALUE || id == Integer.MIN_VALUE) { - return 0; + return 1; } else { return id; } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TopologyQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TopologyQueryEsDAO.java index 00de99eac..f9a037115 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TopologyQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TopologyQueryEsDAO.java @@ -79,17 +79,17 @@ public TopologyQueryEsDAO(ElasticSearchClient client) { private void setQueryCondition(SearchSourceBuilder sourceBuilder, long startTB, long endTB, List<Integer> serviceIds) { BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(ServiceRelationServerSideIndicator.TIME_BUCKET).lte(startTB).gte(endTB)); + boolQuery.must().add(QueryBuilders.rangeQuery(ServiceRelationServerSideIndicator.TIME_BUCKET).gte(startTB).lte(endTB)); BoolQueryBuilder serviceIdBoolQuery = QueryBuilders.boolQuery(); boolQuery.must().add(serviceIdBoolQuery); if (serviceIds.size() == 1) { - boolQuery.should().add(QueryBuilders.termQuery(ServiceRelationServerSideIndicator.SOURCE_SERVICE_ID, serviceIds.get(0))); - boolQuery.should().add(QueryBuilders.termQuery(ServiceRelationServerSideIndicator.DEST_SERVICE_ID, serviceIds.get(0))); + serviceIdBoolQuery.should().add(QueryBuilders.termQuery(ServiceRelationServerSideIndicator.SOURCE_SERVICE_ID, serviceIds.get(0))); + serviceIdBoolQuery.should().add(QueryBuilders.termQuery(ServiceRelationServerSideIndicator.DEST_SERVICE_ID, serviceIds.get(0))); } else { - boolQuery.should().add(QueryBuilders.termsQuery(ServiceRelationServerSideIndicator.SOURCE_SERVICE_ID, serviceIds)); - boolQuery.should().add(QueryBuilders.termsQuery(ServiceRelationServerSideIndicator.DEST_SERVICE_ID, serviceIds)); + serviceIdBoolQuery.should().add(QueryBuilders.termsQuery(ServiceRelationServerSideIndicator.SOURCE_SERVICE_ID, serviceIds)); + serviceIdBoolQuery.should().add(QueryBuilders.termsQuery(ServiceRelationServerSideIndicator.DEST_SERVICE_ID, serviceIds)); } sourceBuilder.query(boolQuery); } @@ -97,7 +97,7 @@ private void setQueryCondition(SearchSourceBuilder sourceBuilder, long startTB, @Override public List<Call> loadServerSideServiceRelations(Step step, long startTB, long endTB) throws IOException { String indexName = TimePyramidTableNameBuilder.build(step, ServiceRelationServerSideIndicator.INDEX_NAME); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); - sourceBuilder.query(QueryBuilders.rangeQuery(ServiceRelationServerSideIndicator.TIME_BUCKET).lte(startTB).gte(endTB)); + sourceBuilder.query(QueryBuilders.rangeQuery(ServiceRelationServerSideIndicator.TIME_BUCKET).gte(startTB).lte(endTB)); sourceBuilder.size(0); return load(sourceBuilder, indexName, ServiceRelationServerSideIndicator.SOURCE_SERVICE_ID, ServiceRelationServerSideIndicator.DEST_SERVICE_ID, Source.Service); @@ -106,7 +106,7 @@ private void setQueryCondition(SearchSourceBuilder sourceBuilder, long startTB, @Override public List<Call> loadClientSideServiceRelations(Step step, long startTB, long endTB) throws IOException { String indexName = TimePyramidTableNameBuilder.build(step, ServiceRelationClientSideIndicator.INDEX_NAME); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); - sourceBuilder.query(QueryBuilders.rangeQuery(ServiceRelationServerSideIndicator.TIME_BUCKET).lte(startTB).gte(endTB)); + sourceBuilder.query(QueryBuilders.rangeQuery(ServiceRelationServerSideIndicator.TIME_BUCKET).gte(startTB).lte(endTB)); sourceBuilder.size(0); return load(sourceBuilder, indexName, ServiceRelationClientSideIndicator.SOURCE_SERVICE_ID, ServiceRelationClientSideIndicator.DEST_SERVICE_ID, Source.Service); @@ -115,7 +115,7 @@ private void setQueryCondition(SearchSourceBuilder sourceBuilder, long startTB, @Override public List<ServiceMapping> loadServiceMappings(Step step, long startTB, long endTB) throws IOException { String indexName = TimePyramidTableNameBuilder.build(step, ServiceMappingIndicator.INDEX_NAME); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); - sourceBuilder.query(QueryBuilders.rangeQuery(ServiceMappingIndicator.TIME_BUCKET).lte(startTB).gte(endTB)); + sourceBuilder.query(QueryBuilders.rangeQuery(ServiceMappingIndicator.TIME_BUCKET).gte(startTB).lte(endTB)); sourceBuilder.size(0); TermsAggregationBuilder sourceAggregation = AggregationBuilders.terms(ServiceMappingIndicator.SERVICE_ID).field(ServiceMappingIndicator.SERVICE_ID).size(1000); @@ -142,7 +142,7 @@ private void setQueryCondition(SearchSourceBuilder sourceBuilder, long startTB, public List<ServiceComponent> loadServiceComponents(Step step, long startTB, long endTB) throws IOException { String indexName = TimePyramidTableNameBuilder.build(step, ServiceComponentIndicator.INDEX_NAME); SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); - sourceBuilder.query(QueryBuilders.rangeQuery(ServiceComponentIndicator.TIME_BUCKET).lte(startTB).gte(endTB)); + sourceBuilder.query(QueryBuilders.rangeQuery(ServiceComponentIndicator.TIME_BUCKET).gte(startTB).lte(endTB)); sourceBuilder.size(0); TermsAggregationBuilder sourceAggregation = AggregationBuilders.terms(ServiceComponentIndicator.SERVICE_ID).field(ServiceComponentIndicator.SERVICE_ID).size(1000); diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java index e8682f9c1..17a0703d9 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java @@ -90,7 +90,7 @@ public TraceBrief queryBasicTraces(long startSecondTB, long endSecondTB, long mi sourceBuilder.sort(SegmentRecord.START_TIME, SortOrder.DESC); break; case BY_DURATION: - sourceBuilder.sort(SegmentRecord.START_TIME, SortOrder.DESC); + sourceBuilder.sort(SegmentRecord.LATENCY, SortOrder.DESC); break; } sourceBuilder.size(limit); ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services