diff --git a/api/src/main/java/io/grpc/LoadBalancer.java b/api/src/main/java/io/grpc/LoadBalancer.java index d5f44dafa5e..3e1141b36f6 100644 --- a/api/src/main/java/io/grpc/LoadBalancer.java +++ b/api/src/main/java/io/grpc/LoadBalancer.java @@ -156,15 +156,17 @@ public String toString() { private int recursionCount; /** - * Handles newly resolved server groups and metadata attributes from name resolution system. - * {@code servers} contained in {@link EquivalentAddressGroup} should be considered equivalent - * but may be flattened into a single list if needed. - * - *

Implementations should not modify the given {@code servers}. + * Handles newly resolved addresses and metadata attributes from name resolution system. + * Addresses in {@link EquivalentAddressGroup} should be considered equivalent but may be + * flattened into a single list if needed. * * @param resolvedAddresses the resolved server addresses, attributes, and config. * @since 1.21.0 + * + * @deprecated As of release 1.69.0, use instead + * {@link #acceptResolvedAddresses(ResolvedAddresses)} */ + @Deprecated public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { if (recursionCount++ == 0) { // Note that the information about the addresses actually being accepted will be lost @@ -179,12 +181,15 @@ public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { * EquivalentAddressGroup} addresses should be considered equivalent but may be flattened into a * single list if needed. * - *

Implementations can choose to reject the given addresses by returning {@code false}. + *

Implementations can choose to reject the given addresses by returning + * {@code Status.UNAVAILABLE}. * - *

Implementations should not modify the given {@code addresses}. + *

Implementations should not modify the given {@code resolvedAddresses}. * * @param resolvedAddresses the resolved server addresses, attributes, and config. - * @return {@code true} if the resolved addresses were accepted. {@code false} if rejected. + * @return {@code Status.OK} if the resolved addresses were accepted. {@code Status.UNAVAILABLE} + * if rejected. + * * @since 1.49.0 */ public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) { diff --git a/interop-testing/src/main/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProvider.java b/interop-testing/src/main/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProvider.java index 65f1c46892b..48034618a1f 100644 --- a/interop-testing/src/main/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProvider.java +++ b/interop-testing/src/main/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProvider.java @@ -111,10 +111,10 @@ protected LoadBalancer delegate() { } @Override - public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { + public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) { helper.setRpcBehavior( ((RpcBehaviorConfig) resolvedAddresses.getLoadBalancingPolicyConfig()).rpcBehavior); - delegateLb.handleResolvedAddresses(resolvedAddresses); + return delegateLb.acceptResolvedAddresses(resolvedAddresses); } @Override diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProviderTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProviderTest.java index f17ea059211..2cebb40f050 100644 --- a/interop-testing/src/test/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProviderTest.java +++ b/interop-testing/src/test/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProviderTest.java @@ -83,8 +83,8 @@ public void handleResolvedAddressesDelegated() { RpcBehaviorLoadBalancer lb = new RpcBehaviorLoadBalancer(new RpcBehaviorHelper(mockHelper), mockDelegateLb); ResolvedAddresses resolvedAddresses = buildResolvedAddresses(buildConfig()); - lb.handleResolvedAddresses(resolvedAddresses); - verify(mockDelegateLb).handleResolvedAddresses(resolvedAddresses); + lb.acceptResolvedAddresses(resolvedAddresses); + verify(mockDelegateLb).acceptResolvedAddresses(resolvedAddresses); } @Test diff --git a/util/src/main/java/io/grpc/util/ForwardingLoadBalancer.java b/util/src/main/java/io/grpc/util/ForwardingLoadBalancer.java index cefcbf344ea..639299b6b6d 100644 --- a/util/src/main/java/io/grpc/util/ForwardingLoadBalancer.java +++ b/util/src/main/java/io/grpc/util/ForwardingLoadBalancer.java @@ -29,9 +29,21 @@ public abstract class ForwardingLoadBalancer extends LoadBalancer { */ protected abstract LoadBalancer delegate(); - @Override + /** + * Handles newly resolved addresses and metadata attributes from name resolution system. + * + * @deprecated As of release 1.69.0, + * use instead {@link #acceptResolvedAddresses(ResolvedAddresses)} + */ + @Deprecated + @SuppressWarnings("all") public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { - delegate().handleResolvedAddresses(resolvedAddresses); + acceptResolvedAddresses(resolvedAddresses); + } + + @Override + public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) { + return delegate().acceptResolvedAddresses(resolvedAddresses); } @Override diff --git a/util/src/main/java/io/grpc/util/GracefulSwitchLoadBalancer.java b/util/src/main/java/io/grpc/util/GracefulSwitchLoadBalancer.java index 72c41886ad4..95c4edd297f 100644 --- a/util/src/main/java/io/grpc/util/GracefulSwitchLoadBalancer.java +++ b/util/src/main/java/io/grpc/util/GracefulSwitchLoadBalancer.java @@ -49,6 +49,13 @@ @NotThreadSafe // Must be accessed in SynchronizationContext public final class GracefulSwitchLoadBalancer extends ForwardingLoadBalancer { private final LoadBalancer defaultBalancer = new LoadBalancer() { + /** + * Handles newly resolved addresses and metadata attributes from name resolution system. + * + * @deprecated As of release 1.69.0, + * use instead {@link #acceptResolvedAddresses(ResolvedAddresses)} + */ + @Deprecated @Override public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) { throw new AssertionError("real LB is called instead"); @@ -97,6 +104,13 @@ public GracefulSwitchLoadBalancer(Helper helper) { this.helper = checkNotNull(helper, "helper"); } + /** + * Handles newly resolved addresses and metadata attributes from name resolution system. + * + * @deprecated As of release 1.69.0, + * use instead {@link #acceptResolvedAddresses(ResolvedAddresses)} + */ + @Deprecated @Override public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { Config config = (Config) resolvedAddresses.getLoadBalancingPolicyConfig(); diff --git a/util/src/test/java/io/grpc/util/ForwardingLoadBalancerTest.java b/util/src/test/java/io/grpc/util/ForwardingLoadBalancerTest.java index f9b53400cea..afdbfd77dad 100644 --- a/util/src/test/java/io/grpc/util/ForwardingLoadBalancerTest.java +++ b/util/src/test/java/io/grpc/util/ForwardingLoadBalancerTest.java @@ -45,6 +45,8 @@ public void allMethodsForwarded() throws Exception { mockDelegate, new TestBalancer(), Arrays.asList( - LoadBalancer.class.getMethod("acceptResolvedAddresses", ResolvedAddresses.class))); + LoadBalancer.class.getMethod("acceptResolvedAddresses", ResolvedAddresses.class), + LoadBalancer.class.getMethod("handleResolvedAddresses", ResolvedAddresses.class)) + ); } } diff --git a/util/src/test/java/io/grpc/util/GracefulSwitchLoadBalancerTest.java b/util/src/test/java/io/grpc/util/GracefulSwitchLoadBalancerTest.java index 9a4f569c144..e7090a25ceb 100644 --- a/util/src/test/java/io/grpc/util/GracefulSwitchLoadBalancerTest.java +++ b/util/src/test/java/io/grpc/util/GracefulSwitchLoadBalancerTest.java @@ -140,6 +140,7 @@ public void canHandleEmptyAddressListFromNameResolutionForwardedToLatestPolicy() assertThat(gracefulSwitchLb.canHandleEmptyAddressListFromNameResolution()).isTrue(); } + @Deprecated @Test public void handleResolvedAddressesAndNameResolutionErrorForwardedToLatestPolicy() { ResolvedAddresses addresses = newFakeAddresses(); diff --git a/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java b/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java index 479bde76ce5..7f4bdea0cfd 100644 --- a/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java +++ b/xds/src/test/java/io/grpc/xds/CdsLoadBalancer2Test.java @@ -802,8 +802,9 @@ private final class FakeLoadBalancer extends LoadBalancer { } @Override - public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { + public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) { config = resolvedAddresses.getLoadBalancingPolicyConfig(); + return Status.OK; } @Override diff --git a/xds/src/test/java/io/grpc/xds/MetadataLoadBalancerProvider.java b/xds/src/test/java/io/grpc/xds/MetadataLoadBalancerProvider.java index 7b56f59451c..64841e71ff9 100644 --- a/xds/src/test/java/io/grpc/xds/MetadataLoadBalancerProvider.java +++ b/xds/src/test/java/io/grpc/xds/MetadataLoadBalancerProvider.java @@ -107,6 +107,13 @@ protected LoadBalancer delegate() { return delegateLb; } + /** + * Handles newly resolved addresses and metadata attributes from name resolution system. + * + * @deprecated As of release 1.69.0, + * use instead {@link #acceptResolvedAddresses(ResolvedAddresses)} + */ + @Deprecated @Override public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { MetadataLoadBalancerConfig config diff --git a/xds/src/test/java/io/grpc/xds/PriorityLoadBalancerTest.java b/xds/src/test/java/io/grpc/xds/PriorityLoadBalancerTest.java index 9823501dcd9..62dbd4d260b 100644 --- a/xds/src/test/java/io/grpc/xds/PriorityLoadBalancerTest.java +++ b/xds/src/test/java/io/grpc/xds/PriorityLoadBalancerTest.java @@ -145,6 +145,7 @@ public void tearDown() { assertThat(fakeClock.getPendingTasks()).isEmpty(); } + @Deprecated @Test public void acceptResolvedAddresses() { SocketAddress socketAddress = new InetSocketAddress(8080); @@ -239,6 +240,7 @@ public void acceptResolvedAddresses() { verify(barBalancer0, never()).shutdown(); } + @Deprecated @Test public void acceptResolvedAddresses_propagatesChildFailures() { LoadBalancerProvider lbProvider = new CannedLoadBalancer.Provider(); @@ -332,6 +334,7 @@ public void handleNameResolutionError() { verify(fooLb1).handleNameResolutionError(status); } + @Deprecated @Test public void typicalPriorityFailOverFlow() { PriorityChildConfig priorityChildConfig0 = @@ -470,6 +473,7 @@ public PickResult pickSubchannel(PickSubchannelArgs args) { verify(balancer3).shutdown(); } + @Deprecated @Test public void idleToConnectingDoesNotTriggerFailOver() { PriorityChildConfig priorityChildConfig0 = @@ -506,6 +510,7 @@ public void idleToConnectingDoesNotTriggerFailOver() { assertThat(fooHelpers).hasSize(1); } + @Deprecated @Test public void connectingResetFailOverIfSeenReadyOrIdleSinceTransientFailure() { PriorityChildConfig priorityChildConfig0 = @@ -548,6 +553,7 @@ public void connectingResetFailOverIfSeenReadyOrIdleSinceTransientFailure() { assertThat(fooHelpers).hasSize(2); } + @Deprecated @Test public void readyToConnectDoesNotFailOverButUpdatesPicker() { PriorityChildConfig priorityChildConfig0 = @@ -605,6 +611,7 @@ public PickResult pickSubchannel(PickSubchannelArgs args) { assertThat(fooHelpers).hasSize(1); } + @Deprecated @Test public void typicalPriorityFailOverFlowWithIdleUpdate() { PriorityChildConfig priorityChildConfig0 = @@ -713,6 +720,7 @@ public void typicalPriorityFailOverFlowWithIdleUpdate() { verify(balancer3).shutdown(); } + @Deprecated @Test public void failover_propagatesChildFailures() { LoadBalancerProvider lbProvider = new CannedLoadBalancer.Provider(); @@ -790,6 +798,7 @@ public void bypassReresolutionRequestsIfConfiged() { verify(helper).refreshNameResolution(); } + @Deprecated @Test public void raceBetweenShutdownAndChildLbBalancingStateUpdate() { PriorityChildConfig priorityChildConfig0 = @@ -815,6 +824,7 @@ public void raceBetweenShutdownAndChildLbBalancingStateUpdate() { verifyNoMoreInteractions(helper); } + @Deprecated @Test public void noDuplicateOverallBalancingStateUpdate() { FakeLoadBalancerProvider fakeLbProvider = new FakeLoadBalancerProvider(); @@ -915,6 +925,7 @@ static class FakeLoadBalancer extends LoadBalancer { this.helper = helper; } + @Deprecated @Override public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) { helper.updateBalancingState( diff --git a/xds/src/test/java/io/grpc/xds/WeightedTargetLoadBalancerTest.java b/xds/src/test/java/io/grpc/xds/WeightedTargetLoadBalancerTest.java index cc6cb98412c..67cc6d3bc9f 100644 --- a/xds/src/test/java/io/grpc/xds/WeightedTargetLoadBalancerTest.java +++ b/xds/src/test/java/io/grpc/xds/WeightedTargetLoadBalancerTest.java @@ -179,6 +179,7 @@ public void tearDown() { } } + @Deprecated @Test public void handleResolvedAddresses() { ArgumentCaptor resolvedAddressesCaptor = @@ -264,6 +265,7 @@ public void handleResolvedAddresses() { } } + @Deprecated @Test public void handleNameResolutionError() { ArgumentCaptor pickerCaptor = ArgumentCaptor.forClass(SubchannelPicker.class); @@ -302,6 +304,7 @@ public void handleNameResolutionError() { } } + @Deprecated @Test public void balancingStateUpdatedFromChildBalancers() { Map targets = ImmutableMap.of( @@ -390,6 +393,7 @@ public void balancingStateUpdatedFromChildBalancers() { new WeightedChildPicker(weights[3], failurePickers[3])); } + @Deprecated @Test public void raceBetweenShutdownAndChildLbBalancingStateUpdate() { Map targets = ImmutableMap.of( @@ -412,6 +416,7 @@ public void raceBetweenShutdownAndChildLbBalancingStateUpdate() { // When the ChildHelper is asked to update the overall balancing state, it should not do that if // the update was triggered by the parent LB that will handle triggering the overall state update. + @Deprecated @Test public void noDuplicateOverallBalancingStateUpdate() { FakeLoadBalancerProvider fakeLbProvider = new FakeLoadBalancerProvider(); @@ -469,6 +474,7 @@ static class FakeLoadBalancer extends LoadBalancer { this.helper = helper; } + @Deprecated @Override public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) { helper.updateBalancingState( diff --git a/xds/src/test/java/io/grpc/xds/WrrLocalityLoadBalancerTest.java b/xds/src/test/java/io/grpc/xds/WrrLocalityLoadBalancerTest.java index b6a5d8dbf73..9703be9db6f 100644 --- a/xds/src/test/java/io/grpc/xds/WrrLocalityLoadBalancerTest.java +++ b/xds/src/test/java/io/grpc/xds/WrrLocalityLoadBalancerTest.java @@ -107,6 +107,7 @@ public void setUp() { loadBalancer = new WrrLocalityLoadBalancer(mockHelper, lbRegistry); } + @Deprecated @Test public void acceptResolvedAddresses() { // A two locality cluster with a mock child LB policy. @@ -173,6 +174,7 @@ public void handleNameResolutionError_withChildLb() { verify(mockWeightedTargetLb).handleNameResolutionError(status); } + @Deprecated @Test public void localityWeightAttributeNotPropagated() { Object childPolicy = newChildConfig(mockChildProvider, null); @@ -212,6 +214,7 @@ private Object newChildConfig(LoadBalancerProvider provider, Object config) { return GracefulSwitchLoadBalancer.createLoadBalancingPolicyConfig(provider, config); } + @Deprecated private void deliverAddresses(WrrLocalityConfig config, List addresses) { loadBalancer.acceptResolvedAddresses( ResolvedAddresses.newBuilder().setAddresses(addresses).setLoadBalancingPolicyConfig(config)