@Override
  public DistributedLock getDistributedLock(String resource, String message) {
    LockScope distributedLockScope =
        new HelixLockScope(HelixLockScope.LockScopeProperty.RESOURCE, Arrays.asList(clusterName, resource));
    String userId = clusterMapConfig.clusterMapHostName + new Random().nextInt();
    ZKDistributedNonblockingLock lock = new ZKDistributedNonblockingLock(distributedLockScope, zkConnectStr,
        clusterMapConfig.clustermapDistributedLockLeaseTimeoutInMs, message, userId);
    return new DistributedLockImpl(lock);
  }
Given a map of old disks and new disks, swaps the old disks with the new disks in the DataNodeConfig,
and persists the resulting changes to Helix.
@param newDiskMapping A map of old disks to new disks.
@return {@code true} if the disks order was successfully updated, {@code false} otherwise.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/HelixParticipant.java