public void registerDelaySuppliers(String tableName, String segmentName, String columnName, int partition,
      Supplier<Integer> numDocsDelaySupplier, Supplier<Long> timeMsDelaySupplier) {
    _lock.lock();
    try {
      TableDelay tableDelay = _tableToPartitionToDelayMs.getOrDefault(tableName, new TableDelay(tableName));
      tableDelay.registerDelaySuppliers(segmentName, columnName, partition, numDocsDelaySupplier, timeMsDelaySupplier);
      _tableToPartitionToDelayMs.put(tableName, tableDelay);
    } finally {
      _lock.unlock();
    }
  }
@Test
  public void testRegistersGaugesPerPartition() {
    _realtimeLuceneIndexingDelayTracker.registerDelaySuppliers("table1", "segment1", "column1", 1, () -> 0, () -> 0L);
    _realtimeLuceneIndexingDelayTracker.registerDelaySuppliers("table1", "segment1", "column1", 2, () -> 0, () -> 0L);

    verify(_serverMetrics).setOrUpdatePartitionGauge(eq("table1"), eq(1), eq(ServerGauge.LUCENE_INDEXING_DELAY_DOCS),
        Mockito.any());
    verify(_serverMetrics).setOrUpdatePartitionGauge(eq("table1"), eq(1), eq(ServerGauge.LUCENE_INDEXING_DELAY_MS),
        Mockito.any());
    verify(_serverMetrics).setOrUpdatePartitionGauge(eq("table1"), eq(2), eq(ServerGauge.LUCENE_INDEXING_DELAY_DOCS),
        Mockito.any());
    verify(_serverMetrics).setOrUpdatePartitionGauge(eq("table1"), eq(2), eq(ServerGauge.LUCENE_INDEXING_DELAY_MS),
        Mockito.any());
  }