Close StatementClient when hitting client-side timeout #24446
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.
Description
Currently,
StatementClient.close()doesn't send a cancel request after hitting the client-side timeout becausestateis changed here:trino/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java
Lines 405 to 408 in 9662e43
while
close()sends a cancel request only whenstateisRUNNING:trino/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java
Lines 553 to 562 in 9662e43
Since
close()is called before changingstatewhen the thread is interrupted, it looks like applying the same way is natural solution:trino/client/trino-client/src/main/java/io/trino/client/StatementClientV1.java
Lines 413 to 422 in 9662e43
However, I have one concern that
stateis changed toCLIENT_ABORTEDinclose()in this case, sostate.compareAndSet(State.RUNNING, State.CLIENT_ERROR);doesn't seem to take effect in the code above. I'm not sure how it should work in this case.Additional context and related issues
Release notes
( ) This is not user-visible or is docs only, and no release notes are required.
( ) Release notes are required. Please propose a release note for me.
( ) Release notes are required, with the following suggested text: