...
To trigger the reassignment cancellation, a new znode /admin/cancel_reassignment_in_progress
is created, the controller will be informed of the reassignment cancellation via a ZooKeeper watch on this. The controller will read the current pending reassignments in /admin/reassign_partitions
and re-populate ControllerContext.partitionReplicaAssignmentpartitionsBeingReassigned
. For each pending topic/partition reassignments, the cancellation /rollback works like below, it's like the opposite of doing reassignments, since we have the "original_replicas"
of each topic/partition reassignments in /admin/reassign_partitions
& ControllerContext.partitionReplicaAssignmentpartitionBeingReassigned
, it is much easier to rollback.
...