Skip to content

Commit 37eb736

Browse files
SreeramdasLavanyashivaspeaksejona86
authored
api: Deprecate LoadBalancer.handleResolvedAddresses() (grpc#11623)
Also deprecate its companion canHandleEmptyAddressListFromNameResolution(). Also fixup the Javadoc to align with the arguments/return values, so that people would have a better idea of how to use it. Fixes grpc#11194 --------- Co-authored-by: MV Shiva Prasad <okshiva@google.com> Co-authored-by: Eric Anderson <ejona@google.com>
1 parent 867e968 commit 37eb736

File tree

10 files changed

+32
-12
lines changed

10 files changed

+32
-12
lines changed

api/src/main/java/io/grpc/LoadBalancer.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,16 @@ public String toString() {
156156
private int recursionCount;
157157

158158
/**
159-
* Handles newly resolved server groups and metadata attributes from name resolution system.
160-
* {@code servers} contained in {@link EquivalentAddressGroup} should be considered equivalent
161-
* but may be flattened into a single list if needed.
162-
*
163-
* <p>Implementations should not modify the given {@code servers}.
159+
* Handles newly resolved addresses and metadata attributes from name resolution system.
160+
* Addresses in {@link EquivalentAddressGroup} should be considered equivalent but may be
161+
* flattened into a single list if needed.
164162
*
165163
* @param resolvedAddresses the resolved server addresses, attributes, and config.
166164
* @since 1.21.0
165+
*
166+
* @deprecated Use instead {@link #acceptResolvedAddresses(ResolvedAddresses)}
167167
*/
168+
@Deprecated
168169
public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) {
169170
if (recursionCount++ == 0) {
170171
// Note that the information about the addresses actually being accepted will be lost
@@ -179,12 +180,10 @@ public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) {
179180
* EquivalentAddressGroup} addresses should be considered equivalent but may be flattened into a
180181
* single list if needed.
181182
*
182-
* <p>Implementations can choose to reject the given addresses by returning {@code false}.
183-
*
184-
* <p>Implementations should not modify the given {@code addresses}.
183+
* @param resolvedAddresses the resolved server addresses, attributes, and config
184+
* @return {@code Status.OK} if the resolved addresses were accepted, otherwise an error to report
185+
* to the name resolver
185186
*
186-
* @param resolvedAddresses the resolved server addresses, attributes, and config.
187-
* @return {@code true} if the resolved addresses were accepted. {@code false} if rejected.
188187
* @since 1.49.0
189188
*/
190189
public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) {
@@ -418,7 +417,16 @@ public void handleSubchannelState(
418417
*
419418
* <p>This method should always return a constant value. It's not specified when this will be
420419
* called.
420+
*
421+
* <p>Note that this method is only called when implementing {@code handleResolvedAddresses()}
422+
* instead of {@code acceptResolvedAddresses()}.
423+
*
424+
* @deprecated Instead of overwriting this and {@code handleResolvedAddresses()}, only
425+
* overwrite {@code acceptResolvedAddresses()} which indicates if the addresses provided
426+
* by the name resolver are acceptable with the {@code boolean} return value.
421427
*/
428+
@Deprecated
429+
@SuppressWarnings("InlineMeSuggester")
422430
public boolean canHandleEmptyAddressListFromNameResolution() {
423431
return false;
424432
}

grpclb/src/main/java/io/grpc/grpclb/GrpclbLoadBalancer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ public void handleNameResolutionError(Status error) {
154154
}
155155

156156
@Override
157+
@Deprecated
158+
@SuppressWarnings("InlineMeSuggester")
157159
public boolean canHandleEmptyAddressListFromNameResolution() {
158160
return true;
159161
}

interop-testing/src/main/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ protected LoadBalancer delegate() {
110110
return delegateLb;
111111
}
112112

113+
@Deprecated
113114
@Override
114115
public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) {
115116
helper.setRpcBehavior(

interop-testing/src/test/java/io/grpc/testing/integration/RpcBehaviorLoadBalancerProviderTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public void parseInvalidConfig() {
7878
assertThat(status.getDescription()).contains("rpcBehavior");
7979
}
8080

81+
@Deprecated
8182
@Test
8283
public void handleResolvedAddressesDelegated() {
8384
RpcBehaviorLoadBalancer lb = new RpcBehaviorLoadBalancer(new RpcBehaviorHelper(mockHelper),

util/src/main/java/io/grpc/util/ForwardingLoadBalancer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public abstract class ForwardingLoadBalancer extends LoadBalancer {
2929
*/
3030
protected abstract LoadBalancer delegate();
3131

32+
@Deprecated
3233
@Override
3334
public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) {
3435
delegate().handleResolvedAddresses(resolvedAddresses);
@@ -52,6 +53,8 @@ public void shutdown() {
5253
}
5354

5455
@Override
56+
@Deprecated
57+
@SuppressWarnings("InlineMeSuggester")
5558
public boolean canHandleEmptyAddressListFromNameResolution() {
5659
return delegate().canHandleEmptyAddressListFromNameResolution();
5760
}

util/src/main/java/io/grpc/util/GracefulSwitchLoadBalancer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public GracefulSwitchLoadBalancer(Helper helper) {
8484
this.helper = checkNotNull(helper, "helper");
8585
}
8686

87+
@Deprecated
8788
@Override
8889
public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) {
8990
Config config = (Config) resolvedAddresses.getLoadBalancingPolicyConfig();

util/src/test/java/io/grpc/util/GracefulSwitchLoadBalancerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void handleSubchannelState_shouldThrow() {
102102
}
103103

104104
@Test
105+
@Deprecated
105106
public void canHandleEmptyAddressListFromNameResolutionForwardedToLatestPolicy() {
106107
assertIsOk(gracefulSwitchLb.acceptResolvedAddresses(addressesBuilder()
107108
.setLoadBalancingPolicyConfig(createConfig(lbPolicies[0], new Object()))
@@ -136,6 +137,7 @@ public void canHandleEmptyAddressListFromNameResolutionForwardedToLatestPolicy()
136137
assertThat(gracefulSwitchLb.canHandleEmptyAddressListFromNameResolution()).isTrue();
137138
}
138139

140+
@Deprecated
139141
@Test
140142
public void handleResolvedAddressesAndNameResolutionErrorForwardedToLatestPolicy() {
141143
ResolvedAddresses addresses = newFakeAddresses();

xds/src/main/java/io/grpc/xds/ClusterImplLoadBalancer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,14 +152,13 @@ public Status acceptResolvedAddresses(ResolvedAddresses resolvedAddresses) {
152152
childLbHelper.updateFilterMetadata(config.filterMetadata);
153153
childLbHelper.updateBackendMetricPropagation(config.backendMetricPropagation);
154154

155-
childSwitchLb.handleResolvedAddresses(
155+
return childSwitchLb.acceptResolvedAddresses(
156156
resolvedAddresses.toBuilder()
157157
.setAttributes(attributes.toBuilder()
158158
.set(NameResolver.ATTR_BACKEND_SERVICE, cluster)
159159
.build())
160160
.setLoadBalancingPolicyConfig(config.childConfig)
161161
.build());
162-
return Status.OK;
163162
}
164163

165164
@Override

xds/src/main/java/io/grpc/xds/WeightedTargetLoadBalancer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ public void handleNameResolutionError(Status error) {
128128
}
129129

130130
@Override
131+
@Deprecated
132+
@SuppressWarnings("InlineMeSuggester")
131133
public boolean canHandleEmptyAddressListFromNameResolution() {
132134
return true;
133135
}

xds/src/test/java/io/grpc/xds/MetadataLoadBalancerProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ protected LoadBalancer delegate() {
107107
return delegateLb;
108108
}
109109

110+
@Deprecated
110111
@Override
111112
public void handleResolvedAddresses(ResolvedAddresses resolvedAddresses) {
112113
MetadataLoadBalancerConfig config

0 commit comments

Comments
 (0)