When a range is assigned to a node (a), and we want it to be assigned to a different node (b), we move it.
- Prepare(b)
- Deactivate(a)
- Activate(b)
- Drop(a)
If step 1 fails, abort the move:
Prepare(b)
If step 2 fails, do nothing. We are stuck until the source placement relinquishes the range:
- Prepare(b)
Deactivate(a)
If step 3 fails, reactivate the source placement, drop the destination placement, and abort the move:
- Prepare(b)
- Deactivate(a)
Activate(b)- Activate(a)
- Drop(b)
If step 4 fails, do nothing but keep trying forever:
- Prepare(b)
- Deactivate(a)
- Activate(b)
Drop(a)