private void scheduleVcrHelix(String reason) {
    if (vcrHelixUpdateFuture != null && vcrHelixUpdateFuture.cancel(false)) {
      // If a vcrHelixUpdate task is scheduled, try to cancel it first.
      vcrHelixUpdateFuture = null;
    }
    // either success cancel or not, we should schedule a new job to updateVcrHelix
    vcrHelixUpdateFuture =
        scheduler.schedule(() -> updateVcrHelix(reason), cloudConfig.vcrHelixUpdateDelayTimeInSeconds,
            TimeUnit.SECONDS);
  }
Check and schedule a VCR helix update task. We schedule updateVcrHelix in 2 cases:
1. On a node become online role of partition, which usually happens on restart or deployment.
2. On Ambry cluster change.
ambry-cloud/src/main/java/com/github/ambry/cloud/VcrReplicationManager.java