mirror of https://github.com/grpc/grpc-java.git
OkHttp: Fix race condition between sendCancel and sendFrame
This commit is contained in:
parent
080190c753
commit
a3f2f6249e
|
|
@ -190,11 +190,14 @@ class OkHttpClientStream extends Http2ClientStream {
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized (lock) {
|
synchronized (lock) {
|
||||||
|
if (cancelSent) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (pendingData != null) {
|
if (pendingData != null) {
|
||||||
// Stream is pending start, queue the data.
|
// Stream is pending start, queue the data.
|
||||||
pendingData.add(new PendingData(buffer, endOfStream, flush));
|
pendingData.add(new PendingData(buffer, endOfStream, flush));
|
||||||
} else {
|
} else {
|
||||||
checkState(id() != 0, "streamId should be set");
|
checkState(id() != null, "streamId should be set");
|
||||||
// If buffer > frameWriter.maxDataLength() the flow-controller will ensure that it is
|
// If buffer > frameWriter.maxDataLength() the flow-controller will ensure that it is
|
||||||
// properly chunked.
|
// properly chunked.
|
||||||
outboundFlow.data(endOfStream, id(), buffer, flush);
|
outboundFlow.data(endOfStream, id(), buffer, flush);
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,7 @@ public class OkHttpClientTransportTest {
|
||||||
startTransport(3, null, true, 1);
|
startTransport(3, null, true, 1);
|
||||||
|
|
||||||
MockStreamListener listener = new MockStreamListener();
|
MockStreamListener listener = new MockStreamListener();
|
||||||
clientTransport.newStream(method, new Metadata.Headers(), listener).request(1);
|
clientTransport.newStream(method, new Metadata(), listener).request(1);
|
||||||
assertContainStream(3);
|
assertContainStream(3);
|
||||||
frameHandler().headers(false, false, 3, 0, grpcResponseHeaders(), HeadersMode.HTTP_20_HEADERS);
|
frameHandler().headers(false, false, 3, 0, grpcResponseHeaders(), HeadersMode.HTTP_20_HEADERS);
|
||||||
assertNotNull(listener.headers);
|
assertNotNull(listener.headers);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue