void initializeHardDeleteMetric(String storeId, final HardDeleter hardDeleter, final PersistentIndex index) {
    String prefix = storeId + SEPARATOR;
    Gauge<Long> currentHardDeleteProgress = hardDeleter::getProgress;
    registry.register(MetricRegistry.name(PersistentIndex.class, prefix + "CurrentHardDeleteProgress"),
        currentHardDeleteProgress);

    Gauge<Double> percentageHardDeleteCompleted =
        () -> ((double) hardDeleter.getProgress() / index.getLogUsedCapacity()) * 100;
    registry.register(MetricRegistry.name(Log.class, prefix + "PercentageHardDeleteCompleted"),
        percentageHardDeleteCompleted);

    Gauge<Long> hardDeleteThreadRunning = () -> hardDeleter.isRunning() ? 1L : 0L;
    registry.register(MetricRegistry.name(PersistentIndex.class, prefix + "HardDeleteThreadRunning"),
        hardDeleteThreadRunning);

    Gauge<Long> hardDeleteCaughtUp = () -> hardDeleter.isCaughtUp() ? 1L : 0L;
    registry.register(MetricRegistry.name(PersistentIndex.class, prefix + "HardDeleteCaughtUp"), hardDeleteCaughtUp);
  }
Deregister the IndexGauges for given {@code store}.
@param storeId the {@link BlobStore} for which the IndexGauges should be deregistered.
ambry-store/src/main/java/com/github/ambry/store/StoreMetrics.java