Support ref endpoint name register (#4422)
This commit is contained in:
parent
b28c7d728e
commit
58a787f9e1
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,29 +139,19 @@ public class ReferenceIdExchanger implements IdExchanger<ReferenceDecorator> {
|
|||
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.
|
||||
* <p>
|
||||
* 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. * <p> * 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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue