From 097e3a8c659ef4bee6ed32f8d5d6caaf6e510fd2 Mon Sep 17 00:00:00 2001 From: Xudong Ma Date: Wed, 25 Nov 2015 12:57:07 -0800 Subject: [PATCH] coalesce pending flushes in OkHttpClientStream.start(). --- .../src/main/java/io/grpc/okhttp/OkHttpClientStream.java | 9 ++++++++- .../main/java/io/grpc/okhttp/OutboundFlowController.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java index 36c4877897..68d4aebd5c 100644 --- a/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java +++ b/okhttp/src/main/java/io/grpc/okhttp/OkHttpClientStream.java @@ -125,9 +125,16 @@ class OkHttpClientStream extends Http2ClientStream { requestHeaders = null; if (pendingData != null) { + boolean flush = false; while (!pendingData.isEmpty()) { PendingData data = pendingData.poll(); - outboundFlow.data(data.endOfStream, id, data.buffer, data.flush); + outboundFlow.data(data.endOfStream, id, data.buffer, false); + if (data.flush) { + flush = true; + } + } + if (flush) { + outboundFlow.flush(); } pendingData = null; } diff --git a/okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java b/okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java index 628ceeb865..b796df9be9 100644 --- a/okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java +++ b/okhttp/src/main/java/io/grpc/okhttp/OutboundFlowController.java @@ -160,7 +160,7 @@ class OutboundFlowController { } } - private void flush() { + void flush() { try { frameWriter.flush(); } catch (IOException e) {