Splitting Schedulers used in BulkWriter between requests and responses #39260
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.
Description
BulkWriter has capped number of operations in flight already (enforced through a Semaphore) - currently for responses it is possible that the Scheduler rejected operations when the queue size of the bulkwriter bounded elastic reached its limit. Instead we should use onBackpressureBuffer there as well - we have capped the number of in-flight operations anyway - and rejection just requires retries.
This PR splits the schedulers for incoming requests and responses and ensures responses (like requests) are buffered unlimited via onBackpressureBuffer()
Sanity testing will happen via integration test in Databricks environment with account with high number of partitions.
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines