mirror of https://github.com/grpc/grpc-java.git
Let xDS load balancer bootstrap from a bootstrap file. Currently not use configurations from bootstrap in xDS communication as the xDS load balancer implementation is undergoing changes. We will integrate it later.
This commit is contained in:
parent
3ae88de5fe
commit
37200cdd3c
|
|
@ -71,6 +71,12 @@ final class XdsLoadBalancer extends LoadBalancer {
|
||||||
private LoadReportClient lrsClient;
|
private LoadReportClient lrsClient;
|
||||||
@Nullable
|
@Nullable
|
||||||
private XdsLbState xdsLbState;
|
private XdsLbState xdsLbState;
|
||||||
|
|
||||||
|
// TODO(chengyuanzhang): use information populated by bootstrapper in xDS communication after
|
||||||
|
// xDS load balancer restructure is done. For now, don't integrate it.
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
@Nullable
|
||||||
|
private Bootstrapper bootstrapper;
|
||||||
private final AdsStreamCallback adsStreamCallback = new AdsStreamCallback() {
|
private final AdsStreamCallback adsStreamCallback = new AdsStreamCallback() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -112,24 +118,27 @@ final class XdsLoadBalancer extends LoadBalancer {
|
||||||
private LbConfig fallbackPolicy;
|
private LbConfig fallbackPolicy;
|
||||||
|
|
||||||
XdsLoadBalancer(Helper helper, LoadBalancerRegistry lbRegistry,
|
XdsLoadBalancer(Helper helper, LoadBalancerRegistry lbRegistry,
|
||||||
BackoffPolicy.Provider backoffPolicyProvider) {
|
BackoffPolicy.Provider backoffPolicyProvider, boolean usingBootstrap) {
|
||||||
this(helper, lbRegistry, backoffPolicyProvider, LoadReportClientFactory.getInstance(),
|
this(helper, lbRegistry, backoffPolicyProvider, usingBootstrap,
|
||||||
new FallbackManager(helper, lbRegistry));
|
LoadReportClientFactory.getInstance(), new FallbackManager(helper, lbRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
private XdsLoadBalancer(Helper helper,
|
private XdsLoadBalancer(Helper helper,
|
||||||
LoadBalancerRegistry lbRegistry,
|
LoadBalancerRegistry lbRegistry,
|
||||||
BackoffPolicy.Provider backoffPolicyProvider,
|
BackoffPolicy.Provider backoffPolicyProvider,
|
||||||
|
boolean usingBootstrap,
|
||||||
LoadReportClientFactory lrsClientFactory,
|
LoadReportClientFactory lrsClientFactory,
|
||||||
FallbackManager fallbackManager) {
|
FallbackManager fallbackManager) {
|
||||||
this(helper, lbRegistry, backoffPolicyProvider, lrsClientFactory, fallbackManager,
|
this(helper, lbRegistry, backoffPolicyProvider, usingBootstrap, lrsClientFactory,
|
||||||
new LocalityStoreImpl(new LocalityStoreHelper(helper, fallbackManager), lbRegistry));
|
fallbackManager, new LocalityStoreImpl(new LocalityStoreHelper(helper, fallbackManager),
|
||||||
|
lbRegistry));
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
XdsLoadBalancer(Helper helper,
|
XdsLoadBalancer(Helper helper,
|
||||||
LoadBalancerRegistry lbRegistry,
|
LoadBalancerRegistry lbRegistry,
|
||||||
BackoffPolicy.Provider backoffPolicyProvider,
|
BackoffPolicy.Provider backoffPolicyProvider,
|
||||||
|
boolean usingBootstrap,
|
||||||
LoadReportClientFactory lrsClientFactory,
|
LoadReportClientFactory lrsClientFactory,
|
||||||
FallbackManager fallbackManager,
|
FallbackManager fallbackManager,
|
||||||
LocalityStore localityStore) {
|
LocalityStore localityStore) {
|
||||||
|
|
@ -139,6 +148,16 @@ final class XdsLoadBalancer extends LoadBalancer {
|
||||||
this.lrsClientFactory = checkNotNull(lrsClientFactory, "lrsClientFactory");
|
this.lrsClientFactory = checkNotNull(lrsClientFactory, "lrsClientFactory");
|
||||||
this.fallbackManager = checkNotNull(fallbackManager, "fallbackManager");
|
this.fallbackManager = checkNotNull(fallbackManager, "fallbackManager");
|
||||||
this.localityStore = checkNotNull(localityStore, "localityStore");
|
this.localityStore = checkNotNull(localityStore, "localityStore");
|
||||||
|
if (usingBootstrap) {
|
||||||
|
// TODO(chengyuanzhang): figure out error handling when bootstrap fails. Currently bootstrap
|
||||||
|
// has not been integrated, but we do need a clear way of handling this case.
|
||||||
|
try {
|
||||||
|
bootstrapper = Bootstrapper.getInstance();
|
||||||
|
} catch (Exception e) {
|
||||||
|
helper.getChannelLogger()
|
||||||
|
.log(ChannelLogLevel.ERROR, "Unable to bootstrap from local bootstrap file.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class LocalityStoreHelper extends ForwardingLoadBalancerHelper {
|
private static final class LocalityStoreHelper extends ForwardingLoadBalancerHelper {
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ public final class XdsLoadBalancerProvider extends LoadBalancerProvider {
|
||||||
@Override
|
@Override
|
||||||
public LoadBalancer newLoadBalancer(Helper helper) {
|
public LoadBalancer newLoadBalancer(Helper helper) {
|
||||||
return new XdsLoadBalancer(helper, LoadBalancerRegistry.getDefaultRegistry(),
|
return new XdsLoadBalancer(helper, LoadBalancerRegistry.getDefaultRegistry(),
|
||||||
new ExponentialBackoffPolicy.Provider());
|
new ExponentialBackoffPolicy.Provider(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -227,7 +227,7 @@ public class XdsLoadBalancerTest {
|
||||||
lbRegistry.register(lbProvider1);
|
lbRegistry.register(lbProvider1);
|
||||||
lbRegistry.register(lbProvider2);
|
lbRegistry.register(lbProvider2);
|
||||||
lbRegistry.register(roundRobin);
|
lbRegistry.register(roundRobin);
|
||||||
lb = new XdsLoadBalancer(helper, lbRegistry, backoffPolicyProvider);
|
lb = new XdsLoadBalancer(helper, lbRegistry, backoffPolicyProvider, false);
|
||||||
doReturn(syncContext).when(helper).getSynchronizationContext();
|
doReturn(syncContext).when(helper).getSynchronizationContext();
|
||||||
doReturn(fakeClock.getScheduledExecutorService()).when(helper).getScheduledExecutorService();
|
doReturn(fakeClock.getScheduledExecutorService()).when(helper).getScheduledExecutorService();
|
||||||
doReturn(mock(ChannelLogger.class)).when(helper).getChannelLogger();
|
doReturn(mock(ChannelLogger.class)).when(helper).getChannelLogger();
|
||||||
|
|
|
||||||
|
|
@ -224,7 +224,7 @@ public class XdsLoadBalancerWithLrsTest {
|
||||||
any(BackoffPolicy.Provider.class), any(LoadStatsStore.class))).thenReturn(lrsClient);
|
any(BackoffPolicy.Provider.class), any(LoadStatsStore.class))).thenReturn(lrsClient);
|
||||||
|
|
||||||
xdsLoadBalancer =
|
xdsLoadBalancer =
|
||||||
new XdsLoadBalancer(helper, lbRegistry, backoffPolicyProvider, lrsClientFactory,
|
new XdsLoadBalancer(helper, lbRegistry, backoffPolicyProvider, false, lrsClientFactory,
|
||||||
new FallbackManager(helper, lbRegistry), localityStore);
|
new FallbackManager(helper, lbRegistry), localityStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue