Repository navigation
Commit 55a8b57
committed
xds: Fix ext_proc client deadlock on unary and server-streaming RPCs when upstream is not ready
Outbound request body messages in ExternalProcessorClientInterceptor were gated on super.isReady() before being forwarded to the upstream ClientCall. On unary and server-streaming RPCs (method.getType().clientSendsOneMessage()), ClientCallImpl intentionally suppresses onReady() notifications, meaning queued messages and halfClose were never drained when the upstream transport stream connected, causing the RPC to hang indefinitely.
Treat the upstream call as ready for outbound message forwarding when method.getType().clientSendsOneMessage() is true via isUpstreamReady().
TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc01 parent 15d64a4 commit 55a8b57
2 files changed
Lines changed: 833 additions & 5 deletions
File tree
- xds/src
- main/java/io/grpc/xds
- test/java/io/grpc/xds
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
934 | 934 | | |
935 | 935 | | |
936 | 936 | | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
937 | 941 | | |
938 | 942 | | |
939 | 943 | | |
| |||
1193 | 1197 | | |
1194 | 1198 | | |
1195 | 1199 | | |
1196 | | - | |
| 1200 | + | |
1197 | 1201 | | |
1198 | 1202 | | |
1199 | 1203 | | |
| |||
1307 | 1311 | | |
1308 | 1312 | | |
1309 | 1313 | | |
1310 | | - | |
| 1314 | + | |
1311 | 1315 | | |
1312 | 1316 | | |
1313 | 1317 | | |
| |||
1366 | 1370 | | |
1367 | 1371 | | |
1368 | 1372 | | |
1369 | | - | |
| 1373 | + | |
1370 | 1374 | | |
1371 | 1375 | | |
1372 | 1376 | | |
1373 | | - | |
| 1377 | + | |
1374 | 1378 | | |
1375 | 1379 | | |
1376 | 1380 | | |
1377 | 1381 | | |
1378 | | - | |
| 1382 | + | |
1379 | 1383 | | |
1380 | 1384 | | |
1381 | 1385 | | |
| |||
0 commit comments