mirror of https://github.com/grpc/grpc-java.git
core: use withOptions instead of withAffinity (#2791)
Fixes #2738 Closes #1766
This commit is contained in:
parent
884b65a891
commit
da93a64ec1
|
|
@ -152,7 +152,10 @@ public final class CallOptions {
|
|||
|
||||
/**
|
||||
* Returns a new {@code CallOptions} with attributes for affinity-based routing.
|
||||
*
|
||||
* @deprecated use {@link #withOption(Key, Object)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1766")
|
||||
public CallOptions withAffinity(Attributes affinity) {
|
||||
CallOptions newOptions = new CallOptions(this);
|
||||
|
|
@ -183,7 +186,10 @@ public final class CallOptions {
|
|||
|
||||
/**
|
||||
* Returns the attributes for affinity-based routing.
|
||||
*
|
||||
* @deprecated use {@link #getOption(Key)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1766")
|
||||
public Attributes getAffinity() {
|
||||
return affinity;
|
||||
|
|
|
|||
|
|
@ -187,6 +187,7 @@ public abstract class LoadBalancer {
|
|||
* @param args the pick arguments
|
||||
*/
|
||||
// TODO(lukaszx0) make it abstract once deprecated overload will be removed.
|
||||
@SuppressWarnings("deprecation")
|
||||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return pickSubchannel(args.getCallOptions().getAffinity(), args.getHeaders());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ import static java.util.concurrent.TimeUnit.SECONDS;
|
|||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import io.grpc.Attributes.Key;
|
||||
import io.grpc.internal.SerializingExecutor;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
@ -57,15 +56,12 @@ public class CallOptionsTest {
|
|||
private String sampleCompressor = "compressor";
|
||||
private Deadline.Ticker ticker = new FakeTicker();
|
||||
private Deadline sampleDeadline = Deadline.after(1, NANOSECONDS, ticker);
|
||||
private Key<String> sampleKey = Attributes.Key.of("sample");
|
||||
private Attributes sampleAffinity = Attributes.newBuilder().set(sampleKey, "blah").build();
|
||||
private CallCredentials sampleCreds = mock(CallCredentials.class);
|
||||
private CallOptions.Key<String> option1 = CallOptions.Key.of("option1", "default");
|
||||
private CallOptions.Key<String> option2 = CallOptions.Key.of("option2", "default");
|
||||
private CallOptions allSet = CallOptions.DEFAULT
|
||||
.withAuthority(sampleAuthority)
|
||||
.withDeadline(sampleDeadline)
|
||||
.withAffinity(sampleAffinity)
|
||||
.withCallCredentials(sampleCreds)
|
||||
.withCompression(sampleCompressor)
|
||||
.withWaitForReady()
|
||||
|
|
@ -77,7 +73,6 @@ public class CallOptionsTest {
|
|||
public void defaultsAreAllNull() {
|
||||
assertThat(CallOptions.DEFAULT.getDeadline()).isNull();
|
||||
assertThat(CallOptions.DEFAULT.getAuthority()).isNull();
|
||||
assertThat(CallOptions.DEFAULT.getAffinity()).isEqualTo(Attributes.EMPTY);
|
||||
assertThat(CallOptions.DEFAULT.getExecutor()).isNull();
|
||||
assertThat(CallOptions.DEFAULT.getCredentials()).isNull();
|
||||
assertThat(CallOptions.DEFAULT.getCompressor()).isNull();
|
||||
|
|
@ -95,7 +90,6 @@ public class CallOptionsTest {
|
|||
public void allWiths() {
|
||||
assertThat(allSet.getAuthority()).isSameAs(sampleAuthority);
|
||||
assertThat(allSet.getDeadline()).isSameAs(sampleDeadline);
|
||||
assertThat(allSet.getAffinity()).isSameAs(sampleAffinity);
|
||||
assertThat(allSet.getCredentials()).isSameAs(sampleCreds);
|
||||
assertThat(allSet.getCompressor()).isSameAs(sampleCompressor);
|
||||
assertThat(allSet.getExecutor()).isSameAs(directExecutor());
|
||||
|
|
@ -112,10 +106,6 @@ public class CallOptionsTest {
|
|||
equal(allSet,
|
||||
allSet.withDeadline(Deadline.after(314, NANOSECONDS)).withDeadline(sampleDeadline)))
|
||||
.isTrue();
|
||||
assertThat(
|
||||
equal(allSet,
|
||||
allSet.withAffinity(Attributes.EMPTY).withAffinity(sampleAffinity)))
|
||||
.isTrue();
|
||||
assertThat(
|
||||
equal(allSet,
|
||||
allSet.withCallCredentials(mock(CallCredentials.class))
|
||||
|
|
@ -168,7 +158,6 @@ public class CallOptionsTest {
|
|||
assertThat(actual).contains("deadline=null");
|
||||
assertThat(actual).contains("authority=authority");
|
||||
assertThat(actual).contains("callCredentials=null");
|
||||
assertThat(actual).contains("affinity={sample=blah}");
|
||||
assertThat(actual).contains("executor=class io.grpc.internal.SerializingExecutor");
|
||||
assertThat(actual).contains("compressorName=compressor");
|
||||
assertThat(actual).contains("customOptions=[[option1, value1], [option2, value2]]");
|
||||
|
|
@ -217,7 +206,6 @@ public class CallOptionsTest {
|
|||
private static boolean equal(CallOptions o1, CallOptions o2) {
|
||||
return Objects.equal(o1.getDeadline(), o2.getDeadline())
|
||||
&& Objects.equal(o1.getAuthority(), o2.getAuthority())
|
||||
&& Objects.equal(o1.getAffinity(), o2.getAffinity())
|
||||
&& Objects.equal(o1.getCredentials(), o2.getCredentials());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ import static org.mockito.Mockito.verify;
|
|||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.grpc.Attributes;
|
||||
import io.grpc.CallOptions;
|
||||
import io.grpc.IntegerMarshaller;
|
||||
import io.grpc.LoadBalancer.PickResult;
|
||||
|
|
@ -93,7 +92,7 @@ public class DelayedClientTransportTest {
|
|||
@Captor private ArgumentCaptor<Status> statusCaptor;
|
||||
@Captor private ArgumentCaptor<ClientStreamListener> listenerCaptor;
|
||||
|
||||
private static final Attributes.Key<Integer> SHARD_ID = Attributes.Key.of("shard-id");
|
||||
private static final CallOptions.Key<Integer> SHARD_ID = CallOptions.Key.of("shard-id", -1);
|
||||
|
||||
private final MethodDescriptor<String, Integer> method =
|
||||
MethodDescriptor.<String, Integer>newBuilder()
|
||||
|
|
@ -304,11 +303,9 @@ public class DelayedClientTransportTest {
|
|||
}
|
||||
|
||||
@Test public void reprocessSemantics() {
|
||||
Attributes affinity1 = Attributes.newBuilder().set(SHARD_ID, 1).build();
|
||||
Attributes affinity2 = Attributes.newBuilder().set(SHARD_ID, 2).build();
|
||||
CallOptions failFastCallOptions = CallOptions.DEFAULT.withAffinity(affinity1);
|
||||
CallOptions waitForReadyCallOptions =
|
||||
CallOptions.DEFAULT.withWaitForReady().withAffinity(affinity2);
|
||||
CallOptions failFastCallOptions = CallOptions.DEFAULT.withOption(SHARD_ID, 1);
|
||||
CallOptions waitForReadyCallOptions = CallOptions.DEFAULT.withOption(SHARD_ID, 2)
|
||||
.withWaitForReady();
|
||||
|
||||
SubchannelImpl subchannel1 = mock(SubchannelImpl.class);
|
||||
SubchannelImpl subchannel2 = mock(SubchannelImpl.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue