This is an automated email from the ASF dual-hosted git repository. edcoleman pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit 510cfda7b69efc4491087d94e53db8cc645fd4e9 Merge: 7211081310 38d9da710b Author: Ed Coleman <edcole...@apache.org> AuthorDate: Tue May 28 23:30:24 2024 +0000 Merge remote-tracking branch 'upstream/2.1' .../server/metrics/NoOpDistributionSummary.java | 83 ---------------------- .../accumulo/server/metrics/NoopMetrics.java | 79 ++++++++++++++++++++ .../accumulo/server/metrics/ThriftMetrics.java | 4 +- ...butionSummaryTest.java => NoopMetricsTest.java} | 20 +++++- .../accumulo/server/metrics/ThriftMetricsTest.java | 3 +- .../apache/accumulo/tserver/ScanServerMetrics.java | 5 +- .../tserver/metrics/TabletServerMinCMetrics.java | 5 +- .../tserver/metrics/TabletServerScanMetrics.java | 9 +-- .../tserver/metrics/TabletServerUpdateMetrics.java | 10 +-- .../apache/accumulo/test/metrics/MetricsIT.java | 16 +++-- 10 files changed, 128 insertions(+), 106 deletions(-) diff --cc server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServerMetrics.java index 45cbdc6810,b56bc20b1a..46a3793861 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServerMetrics.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServerMetrics.java @@@ -35,9 -37,9 +36,9 @@@ import io.micrometer.core.instrument.bi public class ScanServerMetrics implements MetricsProducer { - private Timer totalReservationTimer; - private Timer writeOutReservationTimer; + private Timer totalReservationTimer = NoopMetrics.useNoopTimer(); + private Timer writeOutReservationTimer = NoopMetrics.useNoopTimer(); - private Counter busyTimeoutCount = NoopMetrics.useNoopCounter(); + private final AtomicLong busyTimeoutCount = new AtomicLong(0); private final AtomicLong reservationConflictCount = new AtomicLong(0); private final LoadingCache<KeyExtent,TabletMetadata> tabletMetadataCache; diff --cc server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java index 5ca15c5c9b,c2c8dd0d32..ea246c1c72 --- 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 @@@ -24,10 -23,10 +24,10 @@@ import java.util.concurrent.atomic.Atom import java.util.concurrent.atomic.LongAdder; import org.apache.accumulo.core.metrics.MetricsProducer; - import org.apache.accumulo.server.metrics.NoOpDistributionSummary; + import org.apache.accumulo.server.metrics.NoopMetrics; -import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.DistributionSummary; +import io.micrometer.core.instrument.FunctionCounter; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Timer; @@@ -35,15 -34,13 +35,16 @@@ public class TabletServerScanMetrics implements MetricsProducer { private final AtomicInteger openFiles = new AtomicInteger(0); - private Timer scans; - private DistributionSummary resultsPerScan = new NoOpDistributionSummary(); - private DistributionSummary yields = new NoOpDistributionSummary(); ++ + private Timer scans = NoopMetrics.useNoopTimer(); + private DistributionSummary resultsPerScan = NoopMetrics.useNoopDistributionSummary(); + private DistributionSummary yields = NoopMetrics.useNoopDistributionSummary(); - private Counter startScanCalls = NoopMetrics.useNoopCounter(); - private Counter continueScanCalls = NoopMetrics.useNoopCounter();; - private Counter closeScanCalls = NoopMetrics.useNoopCounter();; - private Counter busyTimeoutCount = NoopMetrics.useNoopCounter();; + private final AtomicLong startScanCalls = new AtomicLong(0); + private final AtomicLong continueScanCalls = new AtomicLong(0); + private final AtomicLong closeScanCalls = new AtomicLong(0); + private final AtomicLong busyTimeoutCount = new AtomicLong(0); + private final AtomicLong pausedForMemory = new AtomicLong(0); + private final AtomicLong earlyReturnForMemory = new AtomicLong(0); private final LongAdder lookupCount = new LongAdder(); private final LongAdder queryResultCount = new LongAdder(); diff --cc server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java index 6dbce396b1,a369458b6c..1c30517e32 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java @@@ -19,28 -19,27 +19,28 @@@ package org.apache.accumulo.tserver.metrics; import java.time.Duration; +import java.util.concurrent.atomic.AtomicLong; import org.apache.accumulo.core.metrics.MetricsProducer; - import org.apache.accumulo.server.metrics.NoOpDistributionSummary; + import org.apache.accumulo.server.metrics.NoopMetrics; -import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.DistributionSummary; +import io.micrometer.core.instrument.FunctionCounter; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Timer; public class TabletServerUpdateMetrics implements MetricsProducer { - private Counter permissionErrorsCounter = NoopMetrics.useNoopCounter(); - private Counter unknownTabletErrorsCounter = NoopMetrics.useNoopCounter(); - private Counter constraintViolationsCounter = NoopMetrics.useNoopCounter(); + private final AtomicLong permissionErrorsCount = new AtomicLong(); + private final AtomicLong unknownTabletErrorsCount = new AtomicLong(); + private final AtomicLong constraintViolationsCount = new AtomicLong(); - private Timer commitPrepStat; - private Timer walogWriteTimeStat; - private Timer commitTimeStat; - private DistributionSummary mutationArraySizeStat = new NoOpDistributionSummary(); + private Timer commitPrepStat = NoopMetrics.useNoopTimer(); - private Timer walogWriteTimeStat = NoopMetrics.useNoopTimer();; - private Timer commitTimeStat = NoopMetrics.useNoopTimer();; ++ private Timer walogWriteTimeStat = NoopMetrics.useNoopTimer(); ++ private Timer commitTimeStat = NoopMetrics.useNoopTimer(); + private DistributionSummary mutationArraySizeStat = NoopMetrics.useNoopDistributionSummary(); public void addPermissionErrors(long value) { - permissionErrorsCounter.increment(value); + permissionErrorsCount.addAndGet(value); } public void addUnknownTabletErrors(long value) { diff --cc test/src/main/java/org/apache/accumulo/test/metrics/MetricsIT.java index 7667f84207,f0b53992b4..36c55f4d1a --- a/test/src/main/java/org/apache/accumulo/test/metrics/MetricsIT.java +++ b/test/src/main/java/org/apache/accumulo/test/metrics/MetricsIT.java @@@ -98,13 -98,22 +98,19 @@@ public class MetricsIT extends Configur doWorkToGenerateMetrics(); cluster.stop(); + // meter names sorted and formatting disabled to make it easier to diff changes + // @formatter:off - Set<String> unexpectedMetrics = - Set.of(METRICS_COMPACTOR_MAJC_STUCK, - METRICS_REPLICATION_QUEUE, - METRICS_SCAN_YIELDS, - METRICS_UPDATE_ERRORS); ++ Set<String> unexpectedMetrics = Set.of(METRICS_COMPACTOR_MAJC_STUCK, ++ METRICS_SCAN_YIELDS); - Set<String> unexpectedMetrics = Set.of(METRICS_COMPACTOR_MAJC_STUCK, METRICS_SCAN_YIELDS); // add sserver as flaky until scan server included in mini tests. - Set<String> flakyMetrics = Set.of(METRICS_FATE_TYPE_IN_PROGRESS, METRICS_GC_WAL_ERRORS, - METRICS_SCAN_BUSY_TIMEOUT_COUNTER, METRICS_SCAN_RESERVATION_CONFLICT_COUNTER, - METRICS_SCAN_RESERVATION_TOTAL_TIMER, METRICS_SCAN_RESERVATION_WRITEOUT_TIMER, - METRICS_SCAN_TABLET_METADATA_CACHE); + Set<String> flakyMetrics = Set.of(METRICS_FATE_TYPE_IN_PROGRESS, + METRICS_SCAN_BUSY_TIMEOUT_COUNTER, + METRICS_SCAN_RESERVATION_CONFLICT_COUNTER, + METRICS_SCAN_RESERVATION_TOTAL_TIMER, + METRICS_SCAN_RESERVATION_WRITEOUT_TIMER, + METRICS_SCAN_TABLET_METADATA_CACHE); + // @formatter:on Map<String,String> expectedMetricNames = this.getMetricFields(); flakyMetrics.forEach(expectedMetricNames::remove); // might not see these