git-hulk opened a new pull request, #2910:
URL: https://github.com/apache/kvrocks/pull/2910

   Currently, the EXEC is an exclusive command and will enter the transaction 
mode when running, but the blocking command's callback function doesn't have 
this lock. So the callback might get trapped in the wrong transaction mode and 
break the write batch.
   
   For example, the client A sends the command: `BRPOP list 10` and it will 
enter the blocking mode due to no data. And the client B uses the transaction 
to send the command: `MULTI; LPUSH list a; EXEC`. Then the client A's callback 
will be revoked after the `LPUSH` command is executed, but the EXEC is running. 
So the callback's operation(removing an element from the list) will be counted 
in the transaction.
   
   This closes #2900.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to