This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new a062fda  Fixed the bug from topology. (#1736)
a062fda is described below

commit a062fdae71d6305e0693443c2007e7975e218f5d
Author: 彭勇升 pengys <8082...@qq.com>
AuthorDate: Tue Oct 9 20:33:04 2018 +0800

    Fixed the bug from topology. (#1736)
    
    * Fixed the bug from topology.
    
    * no message
---
 .../server/core/cache/EndpointInventoryCache.java    | 18 ++++++++++++++----
 .../core/cache/ServiceInstanceInventoryCache.java    | 12 ++++++++++++
 .../oap/server/core/cache/ServiceInventoryCache.java | 15 +++++++++++++++
 .../oap/server/core/query/TopologyBuilder.java       |  9 +++++++++
 .../oap/server/core/query/TopologyQueryService.java  |  2 +-
 .../core/register/worker/RegisterDistinctWorker.java |  2 +-
 .../register/worker/RegisterPersistentWorker.java    |  2 +-
 .../oap/server/receiver/trace/mock/ConsumerMock.java | 20 ++++++++++----------
 .../oap/server/receiver/trace/mock/ProviderMock.java | 20 ++++++++++----------
 .../oap/server/receiver/trace/mock/RegisterMock.java |  5 ++---
 .../server-starter/src/main/resources/log4j2.xml     |  2 +-
 .../plugin/elasticsearch/base/RegisterEsDAO.java     |  2 +-
 .../elasticsearch/query/TopologyQueryEsDAO.java      | 18 +++++++++---------
 .../plugin/elasticsearch/query/TraceQueryEsDAO.java  |  2 +-
 14 files changed, 87 insertions(+), 42 deletions(-)

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 5e7ff65..eb178a4 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 @@ public class EndpointInventoryCache implements Service {
     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 class EndpointInventoryCache implements Service {
     }
 
     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 777c574..5fc05aa 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.register.ServiceInstanceInventory;
 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 @@ public class ServiceInstanceInventoryCache implements Service 
{
 
     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 class ServiceInstanceInventoryCache implements 
Service {
 
     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 @@ public class ServiceInstanceInventoryCache implements 
Service {
     }
 
     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 8571a63..4aa798c 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.register.ServiceInventory;
 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 @@ public class ServiceInventoryCache implements Service {
 
     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 class ServiceInventoryCache implements Service {
 
     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 class ServiceInventoryCache implements Service {
     }
 
     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 a933a50..5cdcdab 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 @@ class TopologyBuilder {
                 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 @@ class TopologyBuilder {
             call.setTarget(actualTargetId);
             call.setCallType(nodeCompMap.get(clientCall.getTarget()));
             call.setId(clientCall.getId());
+            call.setDetectPoint(DetectPoint.CLIENT);
             calls.add(call);
         });
 
@@ -101,6 +107,7 @@ class TopologyBuilder {
                     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 @@ class TopologyBuilder {
                     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 @@ class TopologyBuilder {
             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 3ba322f..06be80d 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 class TopologyQueryService implements Service {
         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 6227a4d..4a677ce 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 @@ public class RegisterDistinctWorker extends 
AbstractWorker<RegisterSource> {
     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 eb94d66..c4283f0 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 @@ public class RegisterPersistentWorker extends 
AbstractWorker<RegisterSource> {
     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 9d33e91..f91d4a2 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 @@ class ConsumerMock {
     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 @@ class ConsumerMock {
         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 @@ class ConsumerMock {
         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 @@ class ConsumerMock {
         if (isPrepare) {
             span.setOperationName("org.apache.skywalking.RocketMQ");
         } else {
-            span.setOperationNameId(3);
+            span.setOperationNameId(4);
         }
         span.setIsError(false);
         return span;
@@ -117,8 +117,8 @@ class ConsumerMock {
             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 @@ class ConsumerMock {
         if (isPrepare) {
             span.setOperationName("org.apache.skywalking.RocketMQ");
         } else {
-            span.setOperationNameId(3);
+            span.setOperationNameId(4);
         }
         span.setIsError(false);
         return span;
@@ -155,8 +155,8 @@ class ConsumerMock {
             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 5b353c9..42bb3b1 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 @@ class ProviderMock {
         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 @@ class ProviderMock {
     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 @@ class ProviderMock {
             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 @@ class ProviderMock {
             
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 @@ class ProviderMock {
         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 3e9915a..b9514c9 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 @@ class RegisterMock {
 
         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 @@ class RegisterMock {
 
         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 a6ce5a2..2bb7226 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 13c6711..1790854 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 @@ public class RegisterEsDAO extends EsDAO implements 
IRegisterDAO {
 
         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 00de99e..f9a0371 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 class TopologyQueryEsDAO extends EsDAO implements 
ITopologyQueryDAO {
     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 @@ public class TopologyQueryEsDAO extends EsDAO implements 
ITopologyQueryDAO {
     @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 @@ public class TopologyQueryEsDAO extends EsDAO implements 
ITopologyQueryDAO {
     @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 @@ public class TopologyQueryEsDAO extends EsDAO implements 
ITopologyQueryDAO {
     @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 @@ public class TopologyQueryEsDAO extends EsDAO implements 
ITopologyQueryDAO {
     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 e8682f9..17a0703 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 class TraceQueryEsDAO extends EsDAO implements 
ITraceQueryDAO {
                 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);

Reply via email to