diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/EndpointInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/EndpointInventoryRegister.java index 545281805..330ee6517 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/EndpointInventoryRegister.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/EndpointInventoryRegister.java @@ -69,8 +69,8 @@ public class EndpointInventoryRegister implements IEndpointInventoryRegister { } @Override - public int get(int serviceId, String endpointName, int detectPoint) { - return getCacheService().getEndpointId(serviceId, endpointName, detectPoint); + public int get(int serviceId, String endpointName, DetectPoint detectPoint) { + return getCacheService().getEndpointId(serviceId, endpointName, detectPoint.ordinal()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IEndpointInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IEndpointInventoryRegister.java index c29ef6fce..581f8d03e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IEndpointInventoryRegister.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IEndpointInventoryRegister.java @@ -25,7 +25,7 @@ public interface IEndpointInventoryRegister extends Service { int getOrCreate(int serviceId, String endpointName, DetectPoint detectPoint); - int get(int serviceId, String endpointName, int detectPoint); + int get(int serviceId, String endpointName, DetectPoint detectPoint); void heartbeat(int endpointId, long heartBeatTime); } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/ReferenceIdExchanger.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/ReferenceIdExchanger.java index 911c92204..5203b8627 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/ReferenceIdExchanger.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/ReferenceIdExchanger.java @@ -139,29 +139,19 @@ public class ReferenceIdExchanger implements IdExchanger { standardBuilder.setNetworkAddressId(networkAddressId); standardBuilder.setNetworkAddress(Const.EMPTY_STRING); } - } else { - /** - * Since 6.6.0, endpoint id could be -1, as it is not an endpoint. Such as local span and exist span. - */ } return exchanged; } /** - * Endpoint in ref could be local or exit span's operation name. Especially if it is local span operation name, - * exchange may not happen at agent, such as Java agent, then put literal endpoint string in the header, Need to try - * to get the id by assuming the endpoint name is detected at server, local or client. - *

- * If agent does the exchange, then always use endpoint id. + * @since 6.6.0 The endpoint in the ref should be server endpoint only. The agent will/should use `-1`, when it can't + * find the endpoint of entry span in the current tracing context when build the ref. + * @since 5.0 Endpoint in ref could be local or exit span's operation name. Especially if it is local span operation + * name, * exchange may not happen at agent, such as Java agent, then put literal endpoint string in the header, + * Need to try * to get the id by assuming the endpoint name is detected at server, local or client. *

* If + * agent does the exchange, then always use endpoint id. */ private int getEndpointId(int serviceId, String endpointName) { - int endpointId = endpointInventoryRegister.get(serviceId, endpointName, DetectPoint.SERVER.ordinal()); - if (endpointId == Const.NONE) { - endpointId = endpointInventoryRegister.get(serviceId, endpointName, DetectPoint.CLIENT.ordinal()); - if (endpointId == Const.NONE) { - endpointId = endpointInventoryRegister.get(serviceId, endpointName, DetectPoint.UNRECOGNIZED.ordinal()); - } - } - return endpointId; + return endpointInventoryRegister.getOrCreate(serviceId, endpointName, DetectPoint.SERVER); } }