This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch bug-fix in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
commit 4416d27b2b70e67e6a9db0423384984547afa8cb Author: Wu Sheng <[email protected]> AuthorDate: Thu Nov 1 10:56:35 2018 +0800 Fix mesh receiver doesn't update heartbeat. --- .../aop/server/receiver/mesh/TelemetryDataDispatcher.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java index c42fce1..7fa6b05 100644 --- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/TelemetryDataDispatcher.java @@ -24,6 +24,7 @@ import org.apache.skywalking.apm.network.servicemesh.ServiceMeshMetric; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache; import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache; +import org.apache.skywalking.oap.server.core.register.service.IServiceInstanceInventoryRegister; import org.apache.skywalking.oap.server.core.source.All; import org.apache.skywalking.oap.server.core.source.DetectPoint; import org.apache.skywalking.oap.server.core.source.Endpoint; @@ -47,6 +48,7 @@ public class TelemetryDataDispatcher { private static ServiceInventoryCache SERVICE_CACHE; private static ServiceInstanceInventoryCache SERVICE_INSTANCE_CACHE; private static SourceReceiver SOURCE_RECEIVER; + private static IServiceInstanceInventoryRegister SERVICE_INSTANCE_INVENTORY_REGISTER; private TelemetryDataDispatcher() { @@ -57,6 +59,7 @@ public class TelemetryDataDispatcher { SERVICE_CACHE = moduleManager.find(CoreModule.NAME).getService(ServiceInventoryCache.class); SERVICE_INSTANCE_CACHE = moduleManager.find(CoreModule.NAME).getService(ServiceInstanceInventoryCache.class); SOURCE_RECEIVER = moduleManager.find(CoreModule.NAME).getService(SourceReceiver.class); + SERVICE_INSTANCE_INVENTORY_REGISTER = moduleManager.find(CoreModule.NAME).getService(IServiceInstanceInventoryRegister.class); } public static void preProcess(ServiceMeshMetric data) { @@ -77,6 +80,7 @@ public class TelemetryDataDispatcher { ServiceMeshMetric metric = decorator.getMetric(); long minuteTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(metric.getStartTime()); + heartbeat(decorator, minuteTimeBucket); if (org.apache.skywalking.apm.network.common.DetectPoint.server.equals(metric.getDetectPoint())) { toAll(decorator, minuteTimeBucket); toService(decorator, minuteTimeBucket); @@ -87,6 +91,12 @@ public class TelemetryDataDispatcher { toServiceInstanceRelation(decorator, minuteTimeBucket); } + private static void heartbeat(ServiceMeshMetricDataDecorator decorator, long minuteTimeBucket) { + ServiceMeshMetric metric = decorator.getMetric(); + SERVICE_INSTANCE_INVENTORY_REGISTER.heartbeat(metric.getSourceServiceInstanceId(), metric.getEndTime()); + SERVICE_INSTANCE_INVENTORY_REGISTER.heartbeat(metric.getDestServiceInstanceId(), metric.getEndTime()); + } + private static void toAll(ServiceMeshMetricDataDecorator decorator, long minuteTimeBucket) { ServiceMeshMetric metric = decorator.getMetric(); All all = new All(); @@ -143,7 +153,7 @@ public class TelemetryDataDispatcher { ServiceMeshMetric metric = decorator.getMetric(); ServiceInstance serviceInstance = new ServiceInstance(); serviceInstance.setTimeBucket(minuteTimeBucket); - serviceInstance.setId(metric.getDestServiceId()); + serviceInstance.setId(metric.getDestServiceInstanceId()); serviceInstance.setName(getServiceInstanceName(metric.getDestServiceInstanceId(), metric.getDestServiceInstance())); serviceInstance.setServiceId(metric.getDestServiceId()); serviceInstance.setServiceName(getServiceName(metric.getDestServiceId(), metric.getDestServiceName()));
