Javadoc
This lock is used to ensure proper start-then-stop semantics and making sure after stopping no state update happens
and
#sync is not again scheduled in
#executor and if there was a previously scheduled sync before
stopping, it is skipped and also, it is used to ensure that duplicate syncs are never scheduled in the executor.