refactor: grant_ownership retry logic #15275
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.
I hereby agree to the terms of the CLA available at: https://docs.databend.com/dev/policies/cla/
Summary
Before this pr, if the transaction execution of granting ownership fails, it will be retried immediately.
This often leads to frequent failures when multiple connections are simultaneously executing grant ownership.
This is because the role key may cause conflicts. A better solution is to store object and privilege separately as key-value pairs.
However, this solution involves significant changes. This PR temporarily adjusts the retry mechanism(
Tthe role information will be reacquired with each retry, aiming to minimize conflicts.).
No TxnRetryMaxTimes errors occurred during local testing.
Local Test
Environment
script1:
script2:
Test
Error
Error: APIError: ResponseError with 2317: TxnRetryMaxTimes: Txn grant_ownership has retry 60 times, abort.
not occurs.Tests
Type of change
This change is