rls: fix service name and method name separation

Should consistently use the last '/' in the full method name as the separator between service name and method name in MethodDescriptor.
This commit is contained in:
ZHANG Dapeng 2022-02-09 15:36:08 -08:00 committed by GitHub
parent b35506b144
commit da617e6ecd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 3 deletions

View File

@ -880,13 +880,14 @@ final class CachingRlsLbClient {
@Override @Override
public PickResult pickSubchannel(PickSubchannelArgs args) { public PickResult pickSubchannel(PickSubchannelArgs args) {
String[] methodName = args.getMethodDescriptor().getFullMethodName().split("/", 2); String serviceName = args.getMethodDescriptor().getServiceName();
String methodName = args.getMethodDescriptor().getBareMethodName();
RouteLookupRequest request = RouteLookupRequest request =
requestFactory.create(methodName[0], methodName[1], args.getHeaders()); requestFactory.create(serviceName, methodName, args.getHeaders());
final CachedRouteLookupResponse response = CachingRlsLbClient.this.get(request); final CachedRouteLookupResponse response = CachingRlsLbClient.this.get(request);
logger.log(ChannelLogLevel.DEBUG, logger.log(ChannelLogLevel.DEBUG,
"Got route lookup cache entry for service={0}, method={1}, headers={2}:\n {3}", "Got route lookup cache entry for service={0}, method={1}, headers={2}:\n {3}",
new Object[]{methodName[0], methodName[1], args.getHeaders(), response}); new Object[]{serviceName, methodName, args.getHeaders(), response});
if (response.getHeaderData() != null && !response.getHeaderData().isEmpty()) { if (response.getHeaderData() != null && !response.getHeaderData().isEmpty()) {
Metadata headers = args.getHeaders(); Metadata headers = args.getHeaders();