@Override
  public void participate() throws Exception {
    manager = HelixManagerFactory.getZKHelixManager(vcrClusterName, vcrInstanceName, InstanceType.PARTICIPANT,
        cloudConfig.vcrClusterZkConnectString);
    VcrStateModelFactory stateModelFactory = Utils.getObj(cloudConfig.vcrHelixStateModelFactoryClass, this);
    manager.getStateMachineEngine().registerStateModelFactory(stateModelFactory.getStateModelName(), stateModelFactory);
    registerContainerDeletionSyncTask(manager.getStateMachineEngine());
    manager.connect();
    helixAdmin = manager.getClusterManagmentTool();

    InstanceConfig instanceConfig = helixAdmin.getInstanceConfig(vcrClusterName, vcrInstanceName);
    VcrInstanceConfig helixInstanceConfig = VcrInstanceConfig.toVcrInstanceConfig(instanceConfig);
    VcrInstanceConfig newInstanceConfig = new VcrInstanceConfig(cloudConfig.vcrSslPort, cloudConfig.vcrHttp2Port, true);
    if (!helixInstanceConfig.equals(newInstanceConfig))  {
      // Set VCR_HELIX_CONFIG_READY to be true. Listeners take action only when this value is True.
      newInstanceConfig.updateInstanceConfig(instanceConfig);

      logger.info("Update VCR InstanceConfig and set VCR_HELIX_CONFIG_READY to true.");
    } else {
      logger.info("VCR InstanceConfig is the same and VCR_HELIX_CONFIG_READY is true.");
    }
    helixAdmin.setInstanceConfig(vcrClusterName, vcrInstanceName, instanceConfig);
    logger.info("Participated in HelixVcrCluster successfully.");
  }
Remove {@link PartitionId} from assignedPartitionIds set, if {@param partitionIdStr} valid.
Used in one of the vcr state model classes {@link OnlineOfflineHelixVcrStateModel} or
{@link LeaderStandbyHelixVcrStateModel} if current VCR becomes offline for a partition.
@param partitionIdStr The partitionIdStr notified by Helix.
ambry-cloud/src/main/java/com/github/ambry/cloud/HelixVcrClusterParticipant.java