Details
-
Bug
-
Resolution: Fixed
-
Major
-
2.5.0
-
Security Level: Public
-
Untriaged
-
1
-
Unknown
-
June 30 - July 18
Description
This GetAndLock causes the replication or rebalance operation to fail in the following scenario:
1) Rebalance starts and is in progress
2) Active vbucket 0 is moving from Node 1 to Node 2
3) Item A on active vbucket 0 on Node 1 is locked through getLocked() API while vbucket 0 is still being transferring.
4) Active vbucket 0 is transferred to Node 2. Node 1 changes vbucket 0 state to replica.
5) Item A on active vbucket 0 on Node 2 is updated through Set() API
6) Node 2 tries to replicate the updated Item A to the node 1, but receives an error code (ENGINE_KEY_EEXISTS) from Node 1 because Item A is still locked due to the step 3)
7) Node 2 closes the TAP connection to Node 1 because of the above error code, which is a bug in the engine side.
To resolve this issue, we should allow an locked item on a replica vbucket to be updated.