diff options
author | Eric Gribkoff <ericgribkoff@google.com> | 2018-08-28 20:19:45 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-28 20:19:45 -0700 |
commit | fd73209e0c2bdfc6dc454825ba281b9c8039ce99 (patch) | |
tree | 71437394c582711599a965f904583ac65c860e76 /cronet | |
parent | 6037659dd76c00bae997053d4520d168ef7c0057 (diff) | |
download | grpc-grpc-java-fd73209e0c2bdfc6dc454825ba281b9c8039ce99.tar.gz |
cronet: report statsTraceCtx.clientOutboundHeaders() (#4768)
Diffstat (limited to 'cronet')
-rw-r--r-- | cronet/src/main/java/io/grpc/cronet/CronetClientStream.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cronet/src/main/java/io/grpc/cronet/CronetClientStream.java b/cronet/src/main/java/io/grpc/cronet/CronetClientStream.java index 100be20f5..de0bc629b 100644 --- a/cronet/src/main/java/io/grpc/cronet/CronetClientStream.java +++ b/cronet/src/main/java/io/grpc/cronet/CronetClientStream.java @@ -65,6 +65,7 @@ class CronetClientStream extends AbstractClientStream { private static final String LOG_TAG = "grpc-java-cronet"; private final String url; private final String userAgent; + private final StatsTraceContext statsTraceCtx; private final Executor executor; private final Metadata headers; private final CronetClientTransport transport; @@ -98,6 +99,7 @@ class CronetClientStream extends AbstractClientStream { method.isSafe()); this.url = Preconditions.checkNotNull(url, "url"); this.userAgent = Preconditions.checkNotNull(userAgent, "userAgent"); + this.statsTraceCtx = Preconditions.checkNotNull(statsTraceCtx, "statsTraceCtx"); this.executor = Preconditions.checkNotNull(executor, "executor"); this.headers = Preconditions.checkNotNull(headers, "headers"); this.transport = Preconditions.checkNotNull(transport, "transport"); @@ -221,6 +223,8 @@ class CronetClientStream extends AbstractClientStream { private Status cancelReason; @GuardedBy("lock") private boolean readClosed; + @GuardedBy("lock") + private boolean firstWriteComplete; public TransportState( int maxMessageSize, StatsTraceContext statsTraceCtx, Object lock, @@ -418,6 +422,12 @@ class CronetClientStream extends AbstractClientStream { Log.v(LOG_TAG, "onWriteCompleted"); } synchronized (state.lock) { + if (!state.firstWriteComplete) { + // Cronet API doesn't notify when headers are written to wire, but it occurs before first + // onWriteCompleted callback. + state.firstWriteComplete = true; + statsTraceCtx.clientOutboundHeaders(); + } state.onSentBytes(buffer.position()); } } |