mirror of https://github.com/grpc/grpc-java.git
xds: fix xdsNameResolver virtual host lookup authority, use service authority instead of ldsResourceName (#10960)
This commit is contained in:
parent
0ffcd40ab6
commit
78b3972ff3
|
|
@ -696,7 +696,7 @@ final class XdsNameResolver extends NameResolver {
|
||||||
// called in syncContext
|
// called in syncContext
|
||||||
private void updateRoutes(List<VirtualHost> virtualHosts, long httpMaxStreamDurationNano,
|
private void updateRoutes(List<VirtualHost> virtualHosts, long httpMaxStreamDurationNano,
|
||||||
@Nullable List<NamedFilterConfig> filterConfigs) {
|
@Nullable List<NamedFilterConfig> filterConfigs) {
|
||||||
String authority = overrideAuthority != null ? overrideAuthority : ldsResourceName;
|
String authority = overrideAuthority != null ? overrideAuthority : encodedServiceAuthority;
|
||||||
VirtualHost virtualHost = RoutingUtils.findVirtualHostForHostName(virtualHosts, authority);
|
VirtualHost virtualHost = RoutingUtils.findVirtualHostForHostName(virtualHosts, authority);
|
||||||
if (virtualHost == null) {
|
if (virtualHost == null) {
|
||||||
String error = "Failed to find virtual host matching hostname: " + authority;
|
String error = "Failed to find virtual host matching hostname: " + authority;
|
||||||
|
|
|
||||||
|
|
@ -333,6 +333,18 @@ public class XdsNameResolverTest {
|
||||||
RouteAction.forCluster(
|
RouteAction.forCluster(
|
||||||
cluster2, Collections.emptyList(), TimeUnit.SECONDS.toNanos(20L), null),
|
cluster2, Collections.emptyList(), TimeUnit.SECONDS.toNanos(20L), null),
|
||||||
ImmutableMap.of());
|
ImmutableMap.of());
|
||||||
|
bootstrapInfo = BootstrapInfo.builder()
|
||||||
|
.servers(ImmutableList.of(ServerInfo.create(
|
||||||
|
"td.googleapis.com", InsecureChannelCredentials.create())))
|
||||||
|
.clientDefaultListenerResourceNameTemplate("test-%s")
|
||||||
|
.node(Node.newBuilder().build())
|
||||||
|
.build();
|
||||||
|
resolver = new XdsNameResolver(null, AUTHORITY, null,
|
||||||
|
serviceConfigParser, syncContext, scheduler,
|
||||||
|
xdsClientPoolFactory, mockRandom, FilterRegistry.getDefaultRegistry(), null);
|
||||||
|
// use different ldsResourceName and service authority. The virtualhost lookup should use
|
||||||
|
// service authority.
|
||||||
|
expectedLdsResourceName = "test-" + expectedLdsResourceName;
|
||||||
|
|
||||||
resolver.start(mockListener);
|
resolver.start(mockListener);
|
||||||
FakeXdsClient xdsClient = (FakeXdsClient) resolver.getXdsClient();
|
FakeXdsClient xdsClient = (FakeXdsClient) resolver.getXdsClient();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue