Skip to content

Commit 042f987

Browse files
authored
all: remove deprecated StreamInfo.transportAttrs (#8768)
APIs such as `StreamInfo.getTransportAttrs()` were [deprecated](860e97d#diff-aa4049f54d6d5d462700e9221344184a37d2068b3ba7d715abd417b1df5bf883R114) since 1.41.0. Removing now.
1 parent 63756ec commit 042f987

File tree

16 files changed

+25
-161
lines changed

16 files changed

+25
-161
lines changed

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

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ public ClientStreamTracer newClientStreamTracer(StreamInfo info, Metadata header
8181
}
8282
}
8383

84-
/** An abstract class for internal use only. */
85-
@Internal
86-
public abstract static class InternalLimitedInfoFactory extends Factory {}
87-
8884
/**
8985
* Information about a stream.
9086
*
@@ -95,32 +91,17 @@ public abstract static class InternalLimitedInfoFactory extends Factory {}
9591
*/
9692
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/2861")
9793
public static final class StreamInfo {
98-
private final Attributes transportAttrs;
9994
private final CallOptions callOptions;
10095
private final int previousAttempts;
10196
private final boolean isTransparentRetry;
10297

10398
StreamInfo(
104-
Attributes transportAttrs, CallOptions callOptions, int previousAttempts,
105-
boolean isTransparentRetry) {
106-
this.transportAttrs = checkNotNull(transportAttrs, "transportAttrs");
99+
CallOptions callOptions, int previousAttempts, boolean isTransparentRetry) {
107100
this.callOptions = checkNotNull(callOptions, "callOptions");
108101
this.previousAttempts = previousAttempts;
109102
this.isTransparentRetry = isTransparentRetry;
110103
}
111104

112-
/**
113-
* Returns the attributes of the transport that this stream was created on.
114-
*
115-
* @deprecated Use {@link ClientStreamTracer#streamCreated(Attributes, Metadata)} to handle
116-
* the transport Attributes instead.
117-
*/
118-
@Deprecated
119-
@Grpc.TransportAttr
120-
public Attributes getTransportAttrs() {
121-
return transportAttrs;
122-
}
123-
124105
/**
125106
* Returns the effective CallOptions of the call.
126107
*/
@@ -154,7 +135,6 @@ public boolean isTransparentRetry() {
154135
public Builder toBuilder() {
155136
return new Builder()
156137
.setCallOptions(callOptions)
157-
.setTransportAttrs(transportAttrs)
158138
.setPreviousAttempts(previousAttempts)
159139
.setIsTransparentRetry(isTransparentRetry);
160140
}
@@ -171,7 +151,6 @@ public static Builder newBuilder() {
171151
@Override
172152
public String toString() {
173153
return MoreObjects.toStringHelper(this)
174-
.add("transportAttrs", transportAttrs)
175154
.add("callOptions", callOptions)
176155
.add("previousAttempts", previousAttempts)
177156
.add("isTransparentRetry", isTransparentRetry)
@@ -184,27 +163,13 @@ public String toString() {
184163
* @since 1.21.0
185164
*/
186165
public static final class Builder {
187-
private Attributes transportAttrs = Attributes.EMPTY;
188166
private CallOptions callOptions = CallOptions.DEFAULT;
189167
private int previousAttempts;
190168
private boolean isTransparentRetry;
191169

192170
Builder() {
193171
}
194172

195-
/**
196-
* Sets the attributes of the transport that this stream was created on. This field is
197-
* optional.
198-
*
199-
* @deprecated Use {@link ClientStreamTracer#streamCreated(Attributes, Metadata)} to handle
200-
* the transport Attributes instead.
201-
*/
202-
@Deprecated
203-
public Builder setTransportAttrs(@Grpc.TransportAttr Attributes transportAttrs) {
204-
this.transportAttrs = checkNotNull(transportAttrs, "transportAttrs cannot be null");
205-
return this;
206-
}
207-
208173
/**
209174
* Sets the effective CallOptions of the call. This field is optional.
210175
*/
@@ -237,7 +202,7 @@ public Builder setIsTransparentRetry(boolean isTransparentRetry) {
237202
* Builds a new StreamInfo.
238203
*/
239204
public StreamInfo build() {
240-
return new StreamInfo(transportAttrs, callOptions, previousAttempts, isTransparentRetry);
205+
return new StreamInfo(callOptions, previousAttempts, isTransparentRetry);
241206
}
242207
}
243208
}

api/src/test/java/io/grpc/CallOptionsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ public void increment(long period, TimeUnit unit) {
272272
}
273273
}
274274

275-
private static class FakeTracerFactory extends ClientStreamTracer.InternalLimitedInfoFactory {
275+
private static class FakeTracerFactory extends ClientStreamTracer.Factory {
276276
final String name;
277277

278278
FakeTracerFactory(String name) {

census/src/main/java/io/grpc/census/CensusStatsModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ void recordFinishedAttempt() {
397397

398398
@VisibleForTesting
399399
static final class CallAttemptsTracerFactory extends
400-
ClientStreamTracer.InternalLimitedInfoFactory {
400+
ClientStreamTracer.Factory {
401401
static final MeasureLong RETRIES_PER_CALL =
402402
Measure.MeasureLong.create(
403403
"grpc.io/client/retries_per_call", "Number of retries per call", "1");

census/src/main/java/io/grpc/census/CensusTracingModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ private static void recordMessageEvent(
226226
}
227227

228228
@VisibleForTesting
229-
final class CallAttemptsTracerFactory extends ClientStreamTracer.InternalLimitedInfoFactory {
229+
final class CallAttemptsTracerFactory extends ClientStreamTracer.Factory {
230230
volatile int callEnded;
231231

232232
private final boolean isSampledToLocalTracing;

core/src/main/java/io/grpc/internal/GrpcUtil.java

Lines changed: 2 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@
2727
import com.google.common.base.Supplier;
2828
import com.google.common.util.concurrent.ListenableFuture;
2929
import com.google.common.util.concurrent.ThreadFactoryBuilder;
30-
import io.grpc.Attributes;
3130
import io.grpc.CallOptions;
3231
import io.grpc.ClientStreamTracer;
33-
import io.grpc.ClientStreamTracer.InternalLimitedInfoFactory;
3432
import io.grpc.ClientStreamTracer.StreamInfo;
3533
import io.grpc.InternalChannelz.SocketStats;
3634
import io.grpc.InternalLogId;
@@ -725,7 +723,7 @@ public ClientStream newStream(
725723
ClientStreamTracer[] tracers) {
726724
StreamInfo info = StreamInfo.newBuilder().setCallOptions(callOptions).build();
727725
ClientStreamTracer streamTracer =
728-
newClientStreamTracer(streamTracerFactory, info, headers);
726+
streamTracerFactory.newClientStreamTracer(info, headers);
729727
checkState(tracers[tracers.length - 1] == NOOP_TRACER, "lb tracer already assigned");
730728
tracers[tracers.length - 1] = streamTracer;
731729
return transport.newStream(method, headers, callOptions, tracers);
@@ -769,61 +767,14 @@ public static ClientStreamTracer[] getClientStreamTracers(
769767
.setIsTransparentRetry(isTransparentRetry)
770768
.build();
771769
for (int i = 0; i < factories.size(); i++) {
772-
tracers[i] = newClientStreamTracer(factories.get(i), streamInfo, headers);
770+
tracers[i] = factories.get(i).newClientStreamTracer(streamInfo, headers);
773771
}
774772
// Reserved to be set later by the lb as per the API contract of ClientTransport.newStream().
775773
// See also GrpcUtil.getTransportFromPickResult()
776774
tracers[tracers.length - 1] = NOOP_TRACER;
777775
return tracers;
778776
}
779777

780-
// A util function for backward compatibility to support deprecated StreamInfo.getAttributes().
781-
@VisibleForTesting
782-
static ClientStreamTracer newClientStreamTracer(
783-
final ClientStreamTracer.Factory streamTracerFactory, final StreamInfo info,
784-
final Metadata headers) {
785-
ClientStreamTracer streamTracer;
786-
if (streamTracerFactory instanceof InternalLimitedInfoFactory) {
787-
streamTracer = streamTracerFactory.newClientStreamTracer(info, headers);
788-
} else {
789-
streamTracer = new ForwardingClientStreamTracer() {
790-
final ClientStreamTracer noop = new ClientStreamTracer() {};
791-
volatile ClientStreamTracer delegate = noop;
792-
793-
void maybeInit(StreamInfo info, Metadata headers) {
794-
if (delegate != noop) {
795-
return;
796-
}
797-
synchronized (this) {
798-
if (delegate == noop) {
799-
delegate = streamTracerFactory.newClientStreamTracer(info, headers);
800-
}
801-
}
802-
}
803-
804-
@Override
805-
protected ClientStreamTracer delegate() {
806-
return delegate;
807-
}
808-
809-
@SuppressWarnings("deprecation")
810-
@Override
811-
public void streamCreated(Attributes transportAttrs, Metadata headers) {
812-
StreamInfo streamInfo = info.toBuilder().setTransportAttrs(transportAttrs).build();
813-
maybeInit(streamInfo, headers);
814-
delegate().streamCreated(transportAttrs, headers);
815-
}
816-
817-
@Override
818-
public void streamClosed(Status status) {
819-
maybeInit(info, headers);
820-
delegate().streamClosed(status);
821-
}
822-
};
823-
}
824-
return streamTracer;
825-
}
826-
827778
/** Quietly closes all messages in MessageProducer. */
828779
static void closeQuietly(MessageProducer producer) {
829780
InputStream message;

core/src/main/java/io/grpc/internal/RetriableStream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ private Substream createSubstream(int previousAttemptCount, boolean isTransparen
221221
Substream sub = new Substream(previousAttemptCount);
222222
// one tracer per substream
223223
final ClientStreamTracer bufferSizeTracer = new BufferSizeTracer(sub);
224-
ClientStreamTracer.Factory tracerFactory = new ClientStreamTracer.InternalLimitedInfoFactory() {
224+
ClientStreamTracer.Factory tracerFactory = new ClientStreamTracer.Factory() {
225225
@Override
226226
public ClientStreamTracer newClientStreamTracer(
227227
ClientStreamTracer.StreamInfo info, Metadata headers) {

core/src/test/java/io/grpc/ClientStreamTracerTest.java

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,48 +27,34 @@
2727
/** Unit tests for the embedded classes in {@link ClientStreamTracer}. */
2828
@RunWith(JUnit4.class)
2929
public class ClientStreamTracerTest {
30-
private static final Attributes.Key<String> TRANSPORT_ATTR_KEY =
31-
Attributes.Key.create("transport-attr-key");
3230
private final CallOptions callOptions = CallOptions.DEFAULT.withDeadlineAfter(1, MINUTES);
33-
private final Attributes transportAttrs =
34-
Attributes.newBuilder().set(TRANSPORT_ATTR_KEY, "value").build();
3531

3632
@Test
37-
@SuppressWarnings("deprecation") // info.getTransportAttrs()
3833
public void streamInfo_empty() {
3934
StreamInfo info = StreamInfo.newBuilder().build();
4035
assertThat(info.getCallOptions()).isSameInstanceAs(CallOptions.DEFAULT);
41-
assertThat(info.getTransportAttrs()).isSameInstanceAs(Attributes.EMPTY);
4236
}
4337

4438
@Test
45-
@SuppressWarnings("deprecation") // info.getTransportAttrs()
4639
public void streamInfo_withInfo() {
47-
StreamInfo info = StreamInfo.newBuilder()
48-
.setCallOptions(callOptions).setTransportAttrs(transportAttrs).build();
40+
StreamInfo info = StreamInfo.newBuilder().setCallOptions(callOptions).build();
4941
assertThat(info.getCallOptions()).isSameInstanceAs(callOptions);
50-
assertThat(info.getTransportAttrs()).isSameInstanceAs(transportAttrs);
5142
}
5243

5344
@Test
54-
@SuppressWarnings("deprecation") // info.setTransportAttrs()
5545
public void streamInfo_noEquality() {
56-
StreamInfo info1 = StreamInfo.newBuilder()
57-
.setCallOptions(callOptions).setTransportAttrs(transportAttrs).build();
58-
StreamInfo info2 = StreamInfo.newBuilder()
59-
.setCallOptions(callOptions).setTransportAttrs(transportAttrs).build();
46+
StreamInfo info1 = StreamInfo.newBuilder().setCallOptions(callOptions).build();
47+
StreamInfo info2 = StreamInfo.newBuilder().setCallOptions(callOptions).build();
6048

6149
assertThat(info1).isNotSameInstanceAs(info2);
6250
assertThat(info1).isNotEqualTo(info2);
6351
}
6452

6553
@Test
66-
@SuppressWarnings("deprecation") // info.getTransportAttrs()
6754
public void streamInfo_toBuilder() {
6855
StreamInfo info1 = StreamInfo.newBuilder()
69-
.setCallOptions(callOptions).setTransportAttrs(transportAttrs).build();
56+
.setCallOptions(callOptions).build();
7057
StreamInfo info2 = info1.toBuilder().build();
7158
assertThat(info2.getCallOptions()).isSameInstanceAs(callOptions);
72-
assertThat(info2.getTransportAttrs()).isSameInstanceAs(transportAttrs);
7359
}
7460
}

core/src/test/java/io/grpc/internal/GrpcUtilTest.java

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package io.grpc.internal;
1818

19-
import static com.google.common.truth.Truth.assertThat;
2019
import static org.junit.Assert.assertEquals;
2120
import static org.junit.Assert.assertFalse;
2221
import static org.junit.Assert.assertNotNull;
@@ -28,18 +27,14 @@
2827
import static org.mockito.Mockito.mock;
2928
import static org.mockito.Mockito.verify;
3029

31-
import io.grpc.Attributes;
3230
import io.grpc.CallOptions;
3331
import io.grpc.ClientStreamTracer;
34-
import io.grpc.ClientStreamTracer.StreamInfo;
3532
import io.grpc.LoadBalancer.PickResult;
3633
import io.grpc.Metadata;
3734
import io.grpc.Status;
3835
import io.grpc.internal.ClientStreamListener.RpcProgress;
3936
import io.grpc.internal.GrpcUtil.Http2Error;
4037
import io.grpc.testing.TestMethodDescriptors;
41-
import java.util.ArrayDeque;
42-
import java.util.concurrent.atomic.AtomicReference;
4338
import org.junit.Rule;
4439
import org.junit.Test;
4540
import org.junit.rules.ExpectedException;
@@ -296,37 +291,4 @@ public void getTransportFromPickResult_dropPickResult_failFast() {
296291

297292
verify(listener).closed(eq(status), eq(RpcProgress.DROPPED), any(Metadata.class));
298293
}
299-
300-
@Test
301-
public void clientStreamTracerFactoryBackwardCompatibility() {
302-
final AtomicReference<Attributes> transportAttrsRef = new AtomicReference<>();
303-
final ClientStreamTracer mockTracer = mock(ClientStreamTracer.class);
304-
final Metadata.Key<String> key = Metadata.Key.of("fake-key", Metadata.ASCII_STRING_MARSHALLER);
305-
final ArrayDeque<ClientStreamTracer> tracers = new ArrayDeque<>();
306-
ClientStreamTracer.Factory oldFactoryImpl = new ClientStreamTracer.Factory() {
307-
@SuppressWarnings("deprecation")
308-
@Override
309-
public ClientStreamTracer newClientStreamTracer(StreamInfo info, Metadata headers) {
310-
transportAttrsRef.set(info.getTransportAttrs());
311-
headers.put(key, "fake-value");
312-
tracers.offer(mockTracer);
313-
return mockTracer;
314-
}
315-
};
316-
317-
StreamInfo info =
318-
StreamInfo.newBuilder().setCallOptions(CallOptions.DEFAULT.withWaitForReady()).build();
319-
Metadata metadata = new Metadata();
320-
Attributes transAttrs =
321-
Attributes.newBuilder().set(Attributes.Key.<String>create("foo"), "bar").build();
322-
ClientStreamTracer tracer = GrpcUtil.newClientStreamTracer(oldFactoryImpl, info, metadata);
323-
tracer.streamCreated(transAttrs, metadata);
324-
assertThat(tracers.poll()).isSameInstanceAs(mockTracer);
325-
assertThat(transportAttrsRef.get()).isEqualTo(transAttrs);
326-
assertThat(metadata.get(key)).isEqualTo("fake-value");
327-
328-
tracer.streamClosed(Status.UNAVAILABLE);
329-
// verify that newClientStreamTracer() is called no more than once
330-
assertThat(tracers).isEmpty();
331-
}
332294
}

core/src/test/java/io/grpc/internal/ManagedChannelImplTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2447,13 +2447,13 @@ public void pickerReturnsStreamTracer_noDelay() {
24472447
ClientStream mockStream = mock(ClientStream.class);
24482448
final ClientStreamTracer tracer1 = new ClientStreamTracer() {};
24492449
final ClientStreamTracer tracer2 = new ClientStreamTracer() {};
2450-
ClientStreamTracer.Factory factory1 = new ClientStreamTracer.InternalLimitedInfoFactory() {
2450+
ClientStreamTracer.Factory factory1 = new ClientStreamTracer.Factory() {
24512451
@Override
24522452
public ClientStreamTracer newClientStreamTracer(StreamInfo info, Metadata headers) {
24532453
return tracer1;
24542454
}
24552455
};
2456-
ClientStreamTracer.Factory factory2 = new ClientStreamTracer.InternalLimitedInfoFactory() {
2456+
ClientStreamTracer.Factory factory2 = new ClientStreamTracer.Factory() {
24572457
@Override
24582458
public ClientStreamTracer newClientStreamTracer(StreamInfo info, Metadata headers) {
24592459
return tracer2;
@@ -2491,13 +2491,13 @@ public void pickerReturnsStreamTracer_delayed() {
24912491
ClientStream mockStream = mock(ClientStream.class);
24922492
final ClientStreamTracer tracer1 = new ClientStreamTracer() {};
24932493
final ClientStreamTracer tracer2 = new ClientStreamTracer() {};
2494-
ClientStreamTracer.Factory factory1 = new ClientStreamTracer.InternalLimitedInfoFactory() {
2494+
ClientStreamTracer.Factory factory1 = new ClientStreamTracer.Factory() {
24952495
@Override
24962496
public ClientStreamTracer newClientStreamTracer(StreamInfo info, Metadata headers) {
24972497
return tracer1;
24982498
}
24992499
};
2500-
ClientStreamTracer.Factory factory2 = new ClientStreamTracer.InternalLimitedInfoFactory() {
2500+
ClientStreamTracer.Factory factory2 = new ClientStreamTracer.Factory() {
25012501
@Override
25022502
public ClientStreamTracer newClientStreamTracer(StreamInfo info, Metadata headers) {
25032503
return tracer2;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
* span of an LB stream with the remote load-balancer.
3838
*/
3939
@ThreadSafe
40-
final class GrpclbClientLoadRecorder extends ClientStreamTracer.InternalLimitedInfoFactory {
40+
final class GrpclbClientLoadRecorder extends ClientStreamTracer.Factory {
4141

4242
private static final AtomicLongFieldUpdater<GrpclbClientLoadRecorder> callsStartedUpdater =
4343
AtomicLongFieldUpdater.newUpdater(GrpclbClientLoadRecorder.class, "callsStarted");

0 commit comments

Comments
 (0)