I understand that HBase uses a Multi-version concurrency control, and the documentation for CheckAndMutate explains that it is an atomic operation. I am not sure what that means?
- Does it mean that all the mutate operations execute in an atomic fashion?
- Does it mean that the CHECK is also included under the same atomic umbrella?
Let's say I have:
- a cell with value 5.
- 2 workers simultaneously want to change the value of the cell (using
checkAndMutate) if the value is 5 - worker-1 checks if the cell value is 5 then set the value to 6
- worker-2 checks if the cell value is 5 then set the value to 7
If the read is included under the same atomic umbrella then only one of the workers would succeed. If the read is not included under the atomic umbrella then both could succeed.