This is an automated email from the ASF dual-hosted git repository. kturner pushed a commit to branch 3.1 in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit 9b22be23d576f7744802bfcda7fbbd145104d652 Merge: d7cbdeceb7 7147177385 Author: Keith Turner <ktur...@apache.org> AuthorDate: Wed Oct 23 21:24:18 2024 +0000 Merge branch '2.1' into 3.1 .../org/apache/accumulo/server/fs/FileManager.java | 4 ++++ .../java/org/apache/accumulo/tserver/ScanServer.java | 2 +- .../org/apache/accumulo/tserver/TabletServer.java | 2 +- .../accumulo/tserver/TabletServerResourceManager.java | 4 ++++ .../tserver/metrics/TabletServerScanMetrics.java | 19 +++++++------------ .../accumulo/tserver/tablet/ScanDataSource.java | 3 --- 6 files changed, 17 insertions(+), 17 deletions(-) diff --cc server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java index e5b40c98d9,36fbd42de1..9275f6fd32 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java @@@ -18,26 -18,10 +18,26 @@@ */ package org.apache.accumulo.tserver.metrics; +import static org.apache.accumulo.core.metrics.Metric.SCAN_BUSY_TIMEOUT_COUNT; +import static org.apache.accumulo.core.metrics.Metric.SCAN_CLOSE; +import static org.apache.accumulo.core.metrics.Metric.SCAN_CONTINUE; +import static org.apache.accumulo.core.metrics.Metric.SCAN_OPEN_FILES; +import static org.apache.accumulo.core.metrics.Metric.SCAN_PAUSED_FOR_MEM; +import static org.apache.accumulo.core.metrics.Metric.SCAN_QUERIES; +import static org.apache.accumulo.core.metrics.Metric.SCAN_QUERY_SCAN_RESULTS; +import static org.apache.accumulo.core.metrics.Metric.SCAN_QUERY_SCAN_RESULTS_BYTES; +import static org.apache.accumulo.core.metrics.Metric.SCAN_RESULTS; +import static org.apache.accumulo.core.metrics.Metric.SCAN_RETURN_FOR_MEM; +import static org.apache.accumulo.core.metrics.Metric.SCAN_SCANNED_ENTRIES; +import static org.apache.accumulo.core.metrics.Metric.SCAN_START; +import static org.apache.accumulo.core.metrics.Metric.SCAN_TIMES; +import static org.apache.accumulo.core.metrics.Metric.SCAN_YIELDS; +import static org.apache.accumulo.core.metrics.Metric.SCAN_ZOMBIE_THREADS; + import java.time.Duration; - import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.LongAdder; + import java.util.function.IntSupplier; import org.apache.accumulo.core.metrics.MetricsProducer; import org.apache.accumulo.server.metrics.NoopMetrics; @@@ -95,36 -96,20 +94,28 @@@ public class TabletServerScanMetrics im yields.record(value); } - public void incrementOpenFiles(int delta) { - openFiles.addAndGet(Math.max(0, delta)); - } - - public void decrementOpenFiles(int delta) { - openFiles.addAndGet(delta < 0 ? delta : delta * -1); - } - - public void incrementStartScan(double value) { - startScanCalls.increment(value); + public void incrementStartScan() { + startScanCalls.incrementAndGet(); } - public void incrementContinueScan(double value) { - continueScanCalls.increment(value); + public void incrementContinueScan() { + continueScanCalls.incrementAndGet(); } - public void incrementCloseScan(double value) { - closeScanCalls.increment(value); + public void incrementCloseScan() { + closeScanCalls.incrementAndGet(); } - public void incrementBusy(double value) { - busyTimeoutCount.increment(value); + public void incrementBusy() { + busyTimeoutCount.incrementAndGet(); + } + + public void incrementScanPausedForLowMemory() { + pausedForMemory.incrementAndGet(); + } + + public void incrementEarlyReturnForLowMemory() { + earlyReturnForMemory.incrementAndGet(); } public void setZombieScanThreads(long count) { @@@ -135,42 -120,42 +126,46 @@@ return zombieScanThreads.get(); } + public TabletServerScanMetrics(IntSupplier openFileSupplier) { + openFiles = openFileSupplier; + } + @Override public void registerMetrics(MeterRegistry registry) { - Gauge.builder(SCAN_OPEN_FILES.getName(), openFiles::get) - Gauge.builder(METRICS_SCAN_OPEN_FILES, openFiles::getAsInt) - .description("Number of files open for scans").register(registry); - scans = Timer.builder(METRICS_SCAN_TIMES).description("Scans").register(registry); - resultsPerScan = DistributionSummary.builder(METRICS_SCAN_RESULTS) - .description("Results per scan").register(registry); - yields = - DistributionSummary.builder(METRICS_SCAN_YIELDS).description("yields").register(registry); - startScanCalls = Counter.builder(METRICS_SCAN_START) - .description("calls to start a scan / multiscan").register(registry); - continueScanCalls = Counter.builder(METRICS_SCAN_CONTINUE) - .description("calls to continue a scan / multiscan").register(registry); - closeScanCalls = Counter.builder(METRICS_SCAN_CLOSE) - .description("calls to close a scan / multiscan").register(registry); - busyTimeoutCount = Counter.builder(METRICS_SCAN_BUSY_TIMEOUT_COUNTER) - .description("The number of scans where a busy timeout happened").register(registry); - Gauge.builder(METRICS_SCAN_QUERIES, this, TabletServerScanMetrics::getLookupCount) - .description("Number of queries").register(registry); - Gauge - .builder(METRICS_SCAN_QUERY_SCAN_RESULTS, this, - TabletServerScanMetrics::getQueryResultCount) - .description("Query rate (entries/sec)").register(registry); - Gauge - .builder(METRICS_SCAN_QUERY_SCAN_RESULTS_BYTES, this, - TabletServerScanMetrics::getQueryByteCount) - .description("Query rate (bytes/sec)").register(registry); - Gauge.builder(METRICS_SCAN_SCANNED_ENTRIES, this, TabletServerScanMetrics::getScannedCount) - .description("Scanned rate").register(registry); - Gauge.builder(METRICS_SCAN_ZOMBIE_THREADS, this, TabletServerScanMetrics::getZombieThreadsCount) - .description("Number of scan threads that have no associated client session") ++ Gauge.builder(SCAN_OPEN_FILES.getName(), openFiles::getAsInt) + .description(SCAN_OPEN_FILES.getDescription()).register(registry); + scans = Timer.builder(SCAN_TIMES.getName()).description(SCAN_TIMES.getDescription()) .register(registry); + resultsPerScan = DistributionSummary.builder(SCAN_RESULTS.getName()) + .description(SCAN_RESULTS.getDescription()).register(registry); + yields = DistributionSummary.builder(SCAN_YIELDS.getName()) + .description(SCAN_YIELDS.getDescription()).register(registry); + FunctionCounter.builder(SCAN_START.getName(), this.startScanCalls, AtomicLong::get) + .description(SCAN_START.getDescription()).register(registry); + FunctionCounter.builder(SCAN_CONTINUE.getName(), this.continueScanCalls, AtomicLong::get) + .description(SCAN_CONTINUE.getDescription()).register(registry); + FunctionCounter.builder(SCAN_CLOSE.getName(), this.closeScanCalls, AtomicLong::get) + .description(SCAN_CLOSE.getDescription()).register(registry); + FunctionCounter + .builder(SCAN_BUSY_TIMEOUT_COUNT.getName(), this.busyTimeoutCount, AtomicLong::get) + .description(SCAN_BUSY_TIMEOUT_COUNT.getDescription()).register(registry); + FunctionCounter.builder(SCAN_QUERIES.getName(), this.lookupCount, LongAdder::sum) + .description(SCAN_QUERIES.getDescription()).register(registry); + FunctionCounter.builder(SCAN_SCANNED_ENTRIES.getName(), this.scannedCount, LongAdder::sum) + .description(SCAN_SCANNED_ENTRIES.getDescription()).register(registry); + FunctionCounter.builder(SCAN_PAUSED_FOR_MEM.getName(), this.pausedForMemory, AtomicLong::get) + .description(SCAN_PAUSED_FOR_MEM.getDescription()).register(registry); + FunctionCounter + .builder(SCAN_RETURN_FOR_MEM.getName(), this.earlyReturnForMemory, AtomicLong::get) + .description(SCAN_RETURN_FOR_MEM.getDescription()).register(registry); + Gauge.builder(SCAN_QUERY_SCAN_RESULTS.getName(), this.queryResultCount, LongAdder::sum) + .description(SCAN_QUERY_SCAN_RESULTS.getDescription()).register(registry); + Gauge.builder(SCAN_QUERY_SCAN_RESULTS_BYTES.getName(), this.queryResultBytes, LongAdder::sum) + .description(SCAN_QUERY_SCAN_RESULTS_BYTES.getDescription()).register(registry); + Gauge + .builder(SCAN_ZOMBIE_THREADS.getName(), this, + TabletServerScanMetrics::getZombieThreadsCount) + .description(SCAN_ZOMBIE_THREADS.getDescription()).register(registry); } }