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

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

commit ee1ac91c353e9594f7eab42026e0b614b4d5e3b3
Author: Wu Sheng <[email protected]>
AuthorDate: Fri Nov 2 23:18:11 2018 +0800

    Make sure heartbeat working always. cc @liuhaoyang make sure .net agent 
hasn't this issue.
---
 .../core/remote/AppAndServiceRegisterClient.java   | 69 ++++++++++------------
 1 file changed, 32 insertions(+), 37 deletions(-)

diff --git 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/AppAndServiceRegisterClient.java
 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/AppAndServiceRegisterClient.java
index 3ce38d9..de5c17d 100644
--- 
a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/AppAndServiceRegisterClient.java
+++ 
b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/AppAndServiceRegisterClient.java
@@ -19,34 +19,38 @@
 package org.apache.skywalking.apm.agent.core.remote;
 
 import io.grpc.Channel;
+import java.util.UUID;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
 import org.apache.skywalking.apm.agent.core.boot.BootService;
 import org.apache.skywalking.apm.agent.core.boot.DefaultImplementor;
 import org.apache.skywalking.apm.agent.core.boot.DefaultNamedThreadFactory;
 import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
 import org.apache.skywalking.apm.agent.core.conf.Config;
 import org.apache.skywalking.apm.agent.core.conf.RemoteDownstreamConfig;
-import org.apache.skywalking.apm.agent.core.context.TracingContext;
-import org.apache.skywalking.apm.agent.core.context.TracingContextListener;
-import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment;
 import org.apache.skywalking.apm.agent.core.dictionary.DictionaryUtil;
 import 
org.apache.skywalking.apm.agent.core.dictionary.NetworkAddressDictionary;
 import org.apache.skywalking.apm.agent.core.dictionary.OperationNameDictionary;
 import org.apache.skywalking.apm.agent.core.logging.api.ILog;
 import org.apache.skywalking.apm.agent.core.logging.api.LogManager;
 import org.apache.skywalking.apm.agent.core.os.OSUtil;
-import org.apache.skywalking.apm.network.language.agent.*;
+import org.apache.skywalking.apm.network.language.agent.Application;
+import org.apache.skywalking.apm.network.language.agent.ApplicationInstance;
+import 
org.apache.skywalking.apm.network.language.agent.ApplicationInstanceHeartbeat;
+import 
org.apache.skywalking.apm.network.language.agent.ApplicationInstanceMapping;
+import org.apache.skywalking.apm.network.language.agent.ApplicationMapping;
+import 
org.apache.skywalking.apm.network.language.agent.ApplicationRegisterServiceGrpc;
+import 
org.apache.skywalking.apm.network.language.agent.InstanceDiscoveryServiceGrpc;
+import 
org.apache.skywalking.apm.network.language.agent.NetworkAddressRegisterServiceGrpc;
+import 
org.apache.skywalking.apm.network.language.agent.ServiceNameDiscoveryServiceGrpc;
 import org.apache.skywalking.apm.util.RunnableWithExceptionProtection;
 
-import java.util.UUID;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
 /**
  * @author wusheng
  */
 @DefaultImplementor
-public class AppAndServiceRegisterClient implements BootService, 
GRPCChannelListener, Runnable, TracingContextListener {
+public class AppAndServiceRegisterClient implements BootService, Runnable, 
GRPCChannelListener {
     private static final ILog logger = 
LogManager.getLogger(AppAndServiceRegisterClient.class);
     private static final String PROCESS_UUID = 
UUID.randomUUID().toString().replaceAll("-", "");
 
@@ -56,7 +60,6 @@ public class AppAndServiceRegisterClient implements 
BootService, GRPCChannelList
     private volatile 
ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceBlockingStub 
serviceNameDiscoveryServiceBlockingStub;
     private volatile 
NetworkAddressRegisterServiceGrpc.NetworkAddressRegisterServiceBlockingStub 
networkAddressRegisterServiceBlockingStub;
     private volatile ScheduledFuture<?> applicationRegisterFuture;
-    private volatile long lastSegmentTime = -1;
 
     @Override
     public void statusChanged(GRPCChannelStatus status) {
@@ -82,18 +85,17 @@ public class AppAndServiceRegisterClient implements 
BootService, GRPCChannelList
     @Override
     public void boot() throws Throwable {
         applicationRegisterFuture = Executors
-                .newSingleThreadScheduledExecutor(new 
DefaultNamedThreadFactory("AppAndServiceRegisterClient"))
-                .scheduleAtFixedRate(new RunnableWithExceptionProtection(this, 
new RunnableWithExceptionProtection.CallbackWhenException() {
-                    @Override
-                    public void handle(Throwable t) {
-                        logger.error("unexpected exception.", t);
-                    }
-                }), 0, 
Config.Collector.APP_AND_SERVICE_REGISTER_CHECK_INTERVAL, TimeUnit.SECONDS);
+            .newSingleThreadScheduledExecutor(new 
DefaultNamedThreadFactory("AppAndServiceRegisterClient"))
+            .scheduleAtFixedRate(new RunnableWithExceptionProtection(this, new 
RunnableWithExceptionProtection.CallbackWhenException() {
+                @Override
+                public void handle(Throwable t) {
+                    logger.error("unexpected exception.", t);
+                }
+            }), 0, Config.Collector.APP_AND_SERVICE_REGISTER_CHECK_INTERVAL, 
TimeUnit.SECONDS);
     }
 
     @Override
     public void onComplete() throws Throwable {
-        TracingContext.ListenerManager.add(this);
     }
 
     @Override
@@ -111,7 +113,7 @@ public class AppAndServiceRegisterClient implements 
BootService, GRPCChannelList
                 if (RemoteDownstreamConfig.Agent.APPLICATION_ID == 
DictionaryUtil.nullValue()) {
                     if (applicationRegisterServiceBlockingStub != null) {
                         ApplicationMapping applicationMapping = 
applicationRegisterServiceBlockingStub.applicationCodeRegister(
-                                
Application.newBuilder().setApplicationCode(Config.Agent.APPLICATION_CODE).build());
+                            
Application.newBuilder().setApplicationCode(Config.Agent.APPLICATION_CODE).build());
                         if (applicationMapping != null) {
                             RemoteDownstreamConfig.Agent.APPLICATION_ID = 
applicationMapping.getApplication().getValue();
                             shouldTry = true;
@@ -122,22 +124,20 @@ public class AppAndServiceRegisterClient implements 
BootService, GRPCChannelList
                         if 
(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID == 
DictionaryUtil.nullValue()) {
 
                             ApplicationInstanceMapping instanceMapping = 
instanceDiscoveryServiceBlockingStub.registerInstance(ApplicationInstance.newBuilder()
-                                    
.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID)
-                                    .setAgentUUID(PROCESS_UUID)
-                                    
.setRegisterTime(System.currentTimeMillis())
-                                    .setOsinfo(OSUtil.buildOSInfo())
-                                    .build());
+                                
.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID)
+                                .setAgentUUID(PROCESS_UUID)
+                                .setRegisterTime(System.currentTimeMillis())
+                                .setOsinfo(OSUtil.buildOSInfo())
+                                .build());
                             if (instanceMapping.getApplicationInstanceId() != 
DictionaryUtil.nullValue()) {
                                 
RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID
-                                        = 
instanceMapping.getApplicationInstanceId();
+                                    = 
instanceMapping.getApplicationInstanceId();
                             }
                         } else {
-                            if (lastSegmentTime - System.currentTimeMillis() > 
60 * 1000) {
-                                
instanceDiscoveryServiceBlockingStub.heartbeat(ApplicationInstanceHeartbeat.newBuilder()
-                                        
.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID)
-                                        
.setHeartbeatTime(System.currentTimeMillis())
-                                        .build());
-                            }
+                            
instanceDiscoveryServiceBlockingStub.heartbeat(ApplicationInstanceHeartbeat.newBuilder()
+                                
.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID)
+                                .setHeartbeatTime(System.currentTimeMillis())
+                                .build());
 
                             
NetworkAddressDictionary.INSTANCE.syncRemoteDictionary(networkAddressRegisterServiceBlockingStub);
                             
OperationNameDictionary.INSTANCE.syncRemoteDictionary(serviceNameDiscoveryServiceBlockingStub);
@@ -150,9 +150,4 @@ public class AppAndServiceRegisterClient implements 
BootService, GRPCChannelList
             }
         }
     }
-
-    @Override
-    public void afterFinished(TraceSegment traceSegment) {
-        lastSegmentTime = System.currentTimeMillis();
-    }
 }

Reply via email to