When HBCK is running, we want to disable Catalog Janitor, Balancer and Split/Merge. Today, the implementation is not robust. If HBCK is terminated earlier by Control-C, the changed state would not be reset to original.
HBASE-15406 was trying to solve this problem for Split/Merge switch. The implementation is complicated, and it did not solve CJ and Balancer.
The proposal to solve the problem is to use a znode to indicate that the HBCK is running. CJ, balancer, and Split/Merge switch all look for this znode before doing it operation.