@@ -71,6 +71,9 @@ public void close() {
7171 }
7272
7373 private static class CallProxy <ReqT , RespT > {
74+ private final Lock clientCallLock = new ReentrantLock ();
75+ private final Lock serverCallLock = new ReentrantLock ();
76+
7477 final RequestProxy serverCallListener ;
7578 final ResponseProxy clientCallListener ;
7679
@@ -80,7 +83,6 @@ private static class CallProxy<ReqT, RespT> {
8083 }
8184
8285 private class RequestProxy extends ServerCall .Listener <ReqT > {
83- private final Lock clientCallLock = new ReentrantLock ();
8486 private final ClientCall <ReqT , ?> clientCall ;
8587 // Hold 'this' lock when accessing
8688 private boolean needToRequest ;
@@ -101,8 +103,8 @@ public void onHalfClose() {
101103
102104 @ Override
103105 public void onMessage (ReqT message ) {
104- clientCall .sendMessage (message );
105106 clientCallLock .lock ();
107+ clientCall .sendMessage (message );
106108 try {
107109 if (clientCall .isReady ()) {
108110 clientCallListener .serverCall .request (1 );
@@ -137,7 +139,6 @@ void onClientReady() {
137139 }
138140
139141 private class ResponseProxy extends ClientCall .Listener <RespT > {
140- private final Lock serverCallLock = new ReentrantLock ();
141142 private final ServerCall <?, RespT > serverCall ;
142143 // Hold 'this' lock when accessing
143144 private boolean needToRequest ;
@@ -158,8 +159,8 @@ public void onHeaders(Metadata headers) {
158159
159160 @ Override
160161 public void onMessage (RespT message ) {
161- serverCall .sendMessage (message );
162162 serverCallLock .lock ();
163+ serverCall .sendMessage (message );
163164 try {
164165 if (serverCall .isReady ()) {
165166 serverCallListener .clientCall .request (1 );
0 commit comments