package pl.allegro.tech.search.elasticsearch.tools.reindex.statistics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.atomic.AtomicLong;
public class ProcessStatistics {
private static final Logger logger = LoggerFactory.getLogger(ProcessStatistics.class);
private final Instant started = Instant.now();
private final AtomicLong updatesCounter = new AtomicLong();
private final AtomicLong queriesCounter = new AtomicLong();
private final AtomicLong failuresCounter = new AtomicLong();
public void incrementUpdates(int indexedCount) {
updatesCounter.getAndAdd(indexedCount);
}
public void incrementQueries(long delta) {
queriesCounter.getAndAdd(delta);
}
public void log(int queuedCount, long queryProcessCount) {
logger.info("{} items: {} / {} ({} {}) failed={}",
Duration.between(started, Instant.now()),
updatesCounter.get(), queriesCounter.get(), queuedCount, queryProcessCount, failuresCounter.get());
}
public void incrementFailures(long delta) {
failuresCounter.addAndGet(delta);
}
public ReindexingSummary createReindexingSummary() {
return ReindexingSummaryBuilder.builder()
.setQueried(queriesCounter.get())
.setIndexed(updatesCounter.get())
.setFailedIndexed(failuresCounter.get())
.createReindexingSummary();
}
}