You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2018/11/01 02:56:55 UTC
[incubator-skywalking] 01/01: Fix mesh receiver doesn't update
heartbeat.
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 <wu...@foxmail.com>
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()));