You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Recover cancellation when close responses flow When streaming call is cancelled it's handled in sender coroutine (lines 311-319). Both client call cancellation (line 316) and failure propagation (line 317) eventually reach the listener onClose callback (where responses flow is closed), but which one reaches the place first is racy. When failure propagation reaches the callback first, the flow is cancelled with cancellation exception (expected). But if the client call cancel reaches the callback first, the flow is cancelled with GRPC status exception (unexpected). This change recovers the cancellation from GRPC status exception if it was the cause to make the behavior deterministic and aligned with expectations. I don't know how to test this change reliably. I succeeded to reproduce the issue via slow emulator tests only with some chance over 100+ runs.
0 commit comments