BinaryJedis.multi(TransactionBlock) should not call discard when exception occurred
* In BinaryJedis.multi(TransactionBlock), multi & exec already fired before exception occured, so sending discard has no effect, and made another error ** add unit test (error inside TransactionBlock) *** Transaction with error - Redis discards transaction automatically (execabort) *** Transaction with error - Redis doesn't roll back (force to execute all)
This commit is contained in:
@@ -1685,13 +1685,9 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKey
|
||||
public List<Object> multi(final TransactionBlock jedisTransaction) {
|
||||
List<Object> results = null;
|
||||
jedisTransaction.setClient(client);
|
||||
try {
|
||||
client.multi();
|
||||
jedisTransaction.execute();
|
||||
results = jedisTransaction.exec();
|
||||
} catch (Exception ex) {
|
||||
jedisTransaction.discard();
|
||||
}
|
||||
client.multi();
|
||||
jedisTransaction.execute();
|
||||
results = jedisTransaction.exec();
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user