[Backport][5.2.1] Extend EXECABORT with "previous errors" #4084#4105
Merged
ggivo merged 1 commit intoredis:5.2.xfrom Mar 3, 2025
Merged
[Backport][5.2.1] Extend EXECABORT with "previous errors" #4084#4105ggivo merged 1 commit intoredis:5.2.xfrom
ggivo merged 1 commit intoredis:5.2.xfrom
Conversation
Propagate errors in transaction on command queuing (e.g before actual EXEC). Errors are added as suppressed exceptions when EXEC is processed. https://redis.io/docs/latest/develop/interact/transactions/ -A command may fail to be queued, so there may be an error before EXEC is called. For instance the command may be syntactically wrong (wrong number of arguments, wrong command name, ...), or there may be some critical condition like an out of memory condition (if the server is configured to have a memory limit using the maxmemory directive). closes redis#4084 (cherry picked from commit 74f3952)
Contributor
There was a problem hiding this comment.
PR Overview
This PR backports an extension for EXECABORT to include previous errors in transactions by propagating errors encountered during command queuing as suppressed exceptions.
- Added a new test in TransactionV2Test.java to validate that queuing errors are captured and propagated.
- Modified Transaction.java to gather queued command responses and, in case of an EXEC error, attach relevant suppressed exceptions.
- Adjusted imports in the test file to support new assertions.
Reviewed Changes
| File | Description |
|---|---|
| src/test/java/redis/clients/jedis/TransactionV2Test.java | Added a test for error propagation before EXEC, ensuring suppressed exceptions are attached. |
| src/main/java/redis/clients/jedis/Transaction.java | Refactored exec() to capture command queuing errors and attach them as suppressed exceptions. |
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Propagate errors in transaction on command queuing (e.g, before actual EXEC). Errors are added as suppressed exceptions when EXEC is processed.
https://redis.io/docs/latest/develop/interact/transactions/
A command may fail to be queued, so there may be an error before EXEC is called.
For instance, the command may be syntactically wrong (wrong number of arguments, wrong command name, ...), or there may be some critical condition like an out of memory condition (if the server is configured to have a memory limit using the maxmemory directive).
(cherry picked from commit 74f3952)