feat(bigquery/storage/managedwriter): graceful connection drains #11463
+25
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR enables a more graceful shutdown when we're doing client initiated reconnects, typically in response to things like schema changes.
With this PR, rather than immediately cancelling the previous connection context, we instead use a goroutine to defer this by a fixed interval, which gives our recv goroutine more time to process any incoming notifications from the service.
This can yield reductions in duplicate rows for some scenarios, particularly when EnableWriteRetries is enabled and we see sequential disconnects (e.g. a multiplex connection observing a number of schema updates).
It does, however, yield possible short term increases in resource usage, as we're now potentially retaining goroutines/channels/connections for a longer interval during these reconnect events. This PR updates testing that looks for leaking resources with this new understanding accordingly.
Towards: #11460