Fix statement/batch request timeouts #341
Merged
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.
Problem statement
The implementation of request timeouts set on statement/batch is hand-crafted and independent from the Rust Driver-provided request timeouts set on cluster/execution profile. This is obviously incorrect, as a longer request timeout on statement/batch would not override a shorter timeout set on cluster/execution profile.
Solution
This PR leverages the
MaybeUnsetConfig
framework to work with request timeouts, and fixes statements and batches to use the Rust Driver's built-in request timeout capabilities.Care is taken to support the semantics correctly:
timeout = 0
means that there should be no timeout. As the Rust driver does not allow for such setting on the statement/batch level, it is emulated using an extremely long timeout.timeout = u64::MAX
means that the timeout should be unset (and the execution profile's/cluster's setting should be used instead). This corresponds to passingNone
to the Rust Driver's{Statement,Batch}::set_request_timeout
.Pre-review checklist
[ ] I have enabled appropriate tests inMakefile
in{SCYLLA,CASSANDRA}_(NO_VALGRIND_)TEST_FILTER
.[ ] I added appropriateFixes:
annotations to PR description.