diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/ServiceMeshMetricDataDecorator.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/ServiceMeshMetricDataDecorator.java index 887ecde6aef38d4f15e1b687d0597a08de702cf0..3dae80dea0183ba29235d5e4602a900c29375a94 100644 --- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/ServiceMeshMetricDataDecorator.java +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/ServiceMeshMetricDataDecorator.java @@ -88,8 +88,14 @@ public class ServiceMeshMetricDataDecorator { if (destServiceId != Const.NONE) { DetectPoint point = origin.getDetectPoint(); - endpointId = CoreRegisterLinker.getEndpointInventoryRegister().getOrCreate(destServiceId, endpoint, - org.apache.skywalking.oap.server.core.source.DetectPoint.fromMeshDetectPoint(point)); + if (DetectPoint.client.equals(point)) { + endpointId = CoreRegisterLinker.getEndpointInventoryRegister().getOrCreate(sourceServiceId, endpoint, + org.apache.skywalking.oap.server.core.source.DetectPoint.fromMeshDetectPoint(point)); + } else { + endpointId = CoreRegisterLinker.getEndpointInventoryRegister().getOrCreate(destServiceId, endpoint, + org.apache.skywalking.oap.server.core.source.DetectPoint.fromMeshDetectPoint(point)); + } + if (endpointId != Const.NONE) { } else { isRegistered = false;