mirror of https://github.com/grpc/grpc-java.git
cronet: pass TransportTracer instead of null. (#3869)
AbstractStream now requires TransportTracer to be non-null.
This commit is contained in:
parent
02f56b0218
commit
aeaced1c5d
|
|
@ -31,6 +31,7 @@ import io.grpc.internal.ConnectionClientTransport;
|
|||
import io.grpc.internal.GrpcUtil;
|
||||
import io.grpc.internal.ProxyParameters;
|
||||
import io.grpc.internal.SharedResourceHolder;
|
||||
import io.grpc.internal.TransportTracer;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
import java.util.concurrent.Executor;
|
||||
|
|
@ -130,7 +131,7 @@ public final class CronetChannelBuilder extends
|
|||
@Override
|
||||
protected final ClientTransportFactory buildTransportFactory() {
|
||||
return new CronetTransportFactory(streamFactory, MoreExecutors.directExecutor(),
|
||||
maxMessageSize, alwaysUsePut);
|
||||
maxMessageSize, alwaysUsePut, transportTracerFactory.create());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -147,16 +148,19 @@ public final class CronetChannelBuilder extends
|
|||
private final int maxMessageSize;
|
||||
private final boolean alwaysUsePut;
|
||||
private final StreamBuilderFactory streamFactory;
|
||||
private final TransportTracer transportTracer;
|
||||
|
||||
private CronetTransportFactory(
|
||||
StreamBuilderFactory streamFactory,
|
||||
Executor executor,
|
||||
int maxMessageSize,
|
||||
boolean alwaysUsePut) {
|
||||
boolean alwaysUsePut,
|
||||
TransportTracer transportTracer) {
|
||||
this.maxMessageSize = maxMessageSize;
|
||||
this.alwaysUsePut = alwaysUsePut;
|
||||
this.streamFactory = streamFactory;
|
||||
this.executor = Preconditions.checkNotNull(executor, "executor");
|
||||
this.transportTracer = Preconditions.checkNotNull(transportTracer, "transportTracer");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -164,7 +168,7 @@ public final class CronetChannelBuilder extends
|
|||
@Nullable String userAgent, @Nullable ProxyParameters proxy) {
|
||||
InetSocketAddress inetSocketAddr = (InetSocketAddress) addr;
|
||||
return new CronetClientTransport(streamFactory, inetSocketAddr, authority, userAgent,
|
||||
executor, maxMessageSize, alwaysUsePut);
|
||||
executor, maxMessageSize, alwaysUsePut, transportTracer);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import io.grpc.internal.Http2ClientStreamTransportState;
|
|||
import io.grpc.internal.ReadableBuffers;
|
||||
import io.grpc.internal.StatsTraceContext;
|
||||
import io.grpc.internal.TransportFrameUtil;
|
||||
import io.grpc.internal.TransportTracer;
|
||||
import io.grpc.internal.WritableBuffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.charset.Charset;
|
||||
|
|
@ -90,8 +91,11 @@ class CronetClientStream extends AbstractClientStream {
|
|||
boolean alwaysUsePut,
|
||||
MethodDescriptor<?, ?> method,
|
||||
StatsTraceContext statsTraceCtx,
|
||||
CallOptions callOptions) {
|
||||
super(new CronetWritableBufferAllocator(), statsTraceCtx, null, headers, method.isSafe());
|
||||
CallOptions callOptions,
|
||||
TransportTracer transportTracer) {
|
||||
super(
|
||||
new CronetWritableBufferAllocator(), statsTraceCtx, transportTracer, headers,
|
||||
method.isSafe());
|
||||
this.url = Preconditions.checkNotNull(url, "url");
|
||||
this.userAgent = Preconditions.checkNotNull(userAgent, "userAgent");
|
||||
this.executor = Preconditions.checkNotNull(executor, "executor");
|
||||
|
|
@ -103,7 +107,7 @@ class CronetClientStream extends AbstractClientStream {
|
|||
this.delayRequestHeader = (method.getType() == MethodDescriptor.MethodType.UNARY);
|
||||
this.annotation = callOptions.getOption(CronetCallOptions.CRONET_ANNOTATION_KEY);
|
||||
this.annotations = callOptions.getOption(CronetCallOptions.CRONET_ANNOTATIONS_KEY);
|
||||
this.state = new TransportState(maxMessageSize, statsTraceCtx, lock);
|
||||
this.state = new TransportState(maxMessageSize, statsTraceCtx, lock, transportTracer);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -218,8 +222,10 @@ class CronetClientStream extends AbstractClientStream {
|
|||
@GuardedBy("lock")
|
||||
private boolean readClosed;
|
||||
|
||||
public TransportState(int maxMessageSize, StatsTraceContext statsTraceCtx, Object lock) {
|
||||
super(maxMessageSize, statsTraceCtx, null);
|
||||
public TransportState(
|
||||
int maxMessageSize, StatsTraceContext statsTraceCtx, Object lock,
|
||||
TransportTracer transportTracer) {
|
||||
super(maxMessageSize, statsTraceCtx, transportTracer);
|
||||
this.lock = Preconditions.checkNotNull(lock, "lock");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import io.grpc.InternalTransportStats;
|
|||
import io.grpc.internal.ConnectionClientTransport;
|
||||
import io.grpc.internal.GrpcUtil;
|
||||
import io.grpc.internal.StatsTraceContext;
|
||||
import io.grpc.internal.TransportTracer;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
|
@ -56,6 +57,7 @@ class CronetClientTransport implements ConnectionClientTransport, InternalWithLo
|
|||
private final Executor executor;
|
||||
private final int maxMessageSize;
|
||||
private final boolean alwaysUsePut;
|
||||
private final TransportTracer transportTracer;
|
||||
// Indicates the transport is in go-away state: no new streams will be processed,
|
||||
// but existing streams may continue.
|
||||
@GuardedBy("lock")
|
||||
|
|
@ -80,7 +82,8 @@ class CronetClientTransport implements ConnectionClientTransport, InternalWithLo
|
|||
@Nullable String userAgent,
|
||||
Executor executor,
|
||||
int maxMessageSize,
|
||||
boolean alwaysUsePut) {
|
||||
boolean alwaysUsePut,
|
||||
TransportTracer transportTracer) {
|
||||
this.address = Preconditions.checkNotNull(address, "address");
|
||||
this.authority = authority;
|
||||
this.userAgent = GrpcUtil.getGrpcUserAgent("cronet", userAgent);
|
||||
|
|
@ -88,6 +91,7 @@ class CronetClientTransport implements ConnectionClientTransport, InternalWithLo
|
|||
this.alwaysUsePut = alwaysUsePut;
|
||||
this.executor = Preconditions.checkNotNull(executor, "executor");
|
||||
this.streamFactory = Preconditions.checkNotNull(streamFactory, "streamFactory");
|
||||
this.transportTracer = Preconditions.checkNotNull(transportTracer, "transportTracer");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -111,7 +115,7 @@ class CronetClientTransport implements ConnectionClientTransport, InternalWithLo
|
|||
class StartCallback implements Runnable {
|
||||
final CronetClientStream clientStream = new CronetClientStream(
|
||||
url, userAgent, executor, headers, CronetClientTransport.this, this, lock, maxMessageSize,
|
||||
alwaysUsePut, method, statsTraceCtx, callOptions);
|
||||
alwaysUsePut, method, statsTraceCtx, callOptions, transportTracer);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import io.grpc.internal.ClientStreamListener;
|
|||
import io.grpc.internal.GrpcUtil;
|
||||
import io.grpc.internal.StatsTraceContext;
|
||||
import io.grpc.internal.StreamListener.MessageProducer;
|
||||
import io.grpc.internal.TransportTracer;
|
||||
import io.grpc.internal.WritableBuffer;
|
||||
import io.grpc.testing.TestMethodDescriptors;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
|
@ -72,6 +73,7 @@ public final class CronetClientStreamTest {
|
|||
@Mock private ClientStreamListener clientListener;
|
||||
@Mock private ExperimentalBidirectionalStream.Builder builder;
|
||||
private final Object lock = new Object();
|
||||
private final TransportTracer transportTracer = TransportTracer.getDefaultFactory().create();
|
||||
CronetClientStream clientStream;
|
||||
|
||||
private MethodDescriptor.Marshaller<Void> marshaller = TestMethodDescriptors.voidMarshaller();
|
||||
|
|
@ -115,7 +117,8 @@ public final class CronetClientStreamTest {
|
|||
false /* alwaysUsePut */,
|
||||
method,
|
||||
StatsTraceContext.NOOP,
|
||||
CallOptions.DEFAULT);
|
||||
CallOptions.DEFAULT,
|
||||
transportTracer);
|
||||
callback.setStream(clientStream);
|
||||
when(factory.newBidirectionalStreamBuilder(
|
||||
any(String.class), any(BidirectionalStream.Callback.class), any(Executor.class)))
|
||||
|
|
@ -573,7 +576,8 @@ public final class CronetClientStreamTest {
|
|||
false /* alwaysUsePut */,
|
||||
method,
|
||||
StatsTraceContext.NOOP,
|
||||
CallOptions.DEFAULT.withOption(CronetCallOptions.CRONET_ANNOTATION_KEY, annotation));
|
||||
CallOptions.DEFAULT.withOption(CronetCallOptions.CRONET_ANNOTATION_KEY, annotation),
|
||||
transportTracer);
|
||||
callback.setStream(stream);
|
||||
when(factory.newBidirectionalStreamBuilder(
|
||||
any(String.class), any(BidirectionalStream.Callback.class), any(Executor.class)))
|
||||
|
|
@ -605,7 +609,8 @@ public final class CronetClientStreamTest {
|
|||
false /* alwaysUsePut */,
|
||||
method,
|
||||
StatsTraceContext.NOOP,
|
||||
callOptions);
|
||||
callOptions,
|
||||
transportTracer);
|
||||
callback.setStream(stream);
|
||||
when(factory.newBidirectionalStreamBuilder(
|
||||
any(String.class), any(BidirectionalStream.Callback.class), any(Executor.class)))
|
||||
|
|
@ -642,7 +647,8 @@ public final class CronetClientStreamTest {
|
|||
false /* alwaysUsePut */,
|
||||
getMethod,
|
||||
StatsTraceContext.NOOP,
|
||||
CallOptions.DEFAULT);
|
||||
CallOptions.DEFAULT,
|
||||
transportTracer);
|
||||
callback.setStream(stream);
|
||||
ExperimentalBidirectionalStream.Builder getBuilder =
|
||||
mock(ExperimentalBidirectionalStream.Builder.class);
|
||||
|
|
@ -696,7 +702,8 @@ public final class CronetClientStreamTest {
|
|||
false /* alwaysUsePut */,
|
||||
idempotentMethod,
|
||||
StatsTraceContext.NOOP,
|
||||
CallOptions.DEFAULT);
|
||||
CallOptions.DEFAULT,
|
||||
transportTracer);
|
||||
callback.setStream(stream);
|
||||
ExperimentalBidirectionalStream.Builder builder =
|
||||
mock(ExperimentalBidirectionalStream.Builder.class);
|
||||
|
|
@ -725,7 +732,8 @@ public final class CronetClientStreamTest {
|
|||
true /* alwaysUsePut */,
|
||||
method,
|
||||
StatsTraceContext.NOOP,
|
||||
CallOptions.DEFAULT);
|
||||
CallOptions.DEFAULT,
|
||||
transportTracer);
|
||||
callback.setStream(stream);
|
||||
ExperimentalBidirectionalStream.Builder builder =
|
||||
mock(ExperimentalBidirectionalStream.Builder.class);
|
||||
|
|
@ -762,7 +770,8 @@ public final class CronetClientStreamTest {
|
|||
false /* alwaysUsePut */,
|
||||
method,
|
||||
StatsTraceContext.NOOP,
|
||||
CallOptions.DEFAULT);
|
||||
CallOptions.DEFAULT,
|
||||
transportTracer);
|
||||
callback.setStream(stream);
|
||||
ExperimentalBidirectionalStream.Builder builder =
|
||||
mock(ExperimentalBidirectionalStream.Builder.class);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import io.grpc.Status;
|
|||
import io.grpc.cronet.CronetChannelBuilder.StreamBuilderFactory;
|
||||
import io.grpc.internal.ClientStreamListener;
|
||||
import io.grpc.internal.ManagedClientTransport;
|
||||
import io.grpc.internal.TransportTracer;
|
||||
import io.grpc.testing.TestMethodDescriptors;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.concurrent.Executor;
|
||||
|
|
@ -64,7 +65,8 @@ public final class CronetClientTransportTest {
|
|||
null,
|
||||
executor,
|
||||
5000,
|
||||
false);
|
||||
false,
|
||||
TransportTracer.getDefaultFactory().create());
|
||||
Runnable callback = transport.start(clientTransportListener);
|
||||
assertTrue(callback != null);
|
||||
callback.run();
|
||||
|
|
|
|||
Loading…
Reference in New Issue