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 a143ec1f9e613ef624c13d27896ad134a651def3
Merge: aab174e83b d888cd809e
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Wed Oct 30 22:34:47 2024 +0000

    Merge branch '2.1' into 3.1

 .../apache/accumulo/core/metrics/MetricsInfo.java  |  39 +---
 .../accumulo/server/metrics/MetricsInfoImpl.java   | 227 ++++++---------------
 server/compaction-coordinator/pom.xml              |   4 +
 .../coordinator/CompactionCoordinator.java         |  11 +-
 .../org/apache/accumulo/compactor/Compactor.java   |  10 +-
 .../apache/accumulo/gc/SimpleGarbageCollector.java |   4 +-
 .../java/org/apache/accumulo/manager/Manager.java  |   4 +-
 .../java/org/apache/accumulo/monitor/Monitor.java  |   4 +-
 .../org/apache/accumulo/tserver/ScanServer.java    |   4 +-
 .../org/apache/accumulo/tserver/TabletServer.java  |   4 +-
 .../accumulo/test/functional/ZombieTServer.java    |   4 +-
 .../accumulo/test/metrics/TestStatsDSink.java      |  33 +--
 12 files changed, 124 insertions(+), 224 deletions(-)

diff --cc core/src/main/java/org/apache/accumulo/core/metrics/MetricsInfo.java
index 4134ccd396,beb23685f7..297745593a
--- a/core/src/main/java/org/apache/accumulo/core/metrics/MetricsInfo.java
+++ b/core/src/main/java/org/apache/accumulo/core/metrics/MetricsInfo.java
@@@ -24,9 -24,8 +24,8 @@@ import java.util.Collections
  import java.util.List;
  import java.util.Objects;
  
 -import org.apache.accumulo.core.util.HostAndPort;
 +import com.google.common.net.HostAndPort;
  
- import io.micrometer.core.instrument.MeterRegistry;
  import io.micrometer.core.instrument.Tag;
  
  public interface MetricsInfo {
diff --cc 
server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsInfoImpl.java
index 9e7e799d47,5b765e747c..418dcd60c0
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsInfoImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsInfoImpl.java
@@@ -212,70 -116,64 +117,62 @@@ public class MetricsInfoImpl implement
        LOG.info("Metrics not initialized, metrics are disabled.");
        return;
      }
-     lock.lock();
-     try {
-       if (composite != null) {
-         LOG.warn("metrics registry has already been initialized");
-         return;
-       }
-       composite = new CompositeMeterRegistry();
-       composite.config().commonTags(commonTags.values());
- 
-       LOG.info("Metrics initialization. common tags: {}", commonTags);
- 
-       boolean jvmMetricsEnabled =
-           
context.getConfiguration().getBoolean(Property.GENERAL_MICROMETER_JVM_METRICS_ENABLED);
- 
-       if (jvmMetricsEnabled) {
-         LOG.info("enabling detailed jvm, classloader, jvm gc and process 
metrics");
-         new ClassLoaderMetrics().bindTo(composite);
-         new JvmMemoryMetrics().bindTo(composite);
-         jvmGcMetrics = new JvmGcMetrics();
-         jvmGcMetrics.bindTo(composite);
-         new ProcessorMetrics().bindTo(composite);
-         new JvmThreadMetrics().bindTo(composite);
-       }
+     if (commonTags != null) {
+       LOG.warn("metrics registry has already been initialized");
+       return;
+     }
  
-       MeterFilter replicationFilter = new MeterFilter() {
-         @Override
-         public DistributionStatisticConfig configure(Meter.Id id,
-             @NonNull DistributionStatisticConfig config) {
-           if (id.getName().equals("replicationQueue")) {
-             return DistributionStatisticConfig.builder().percentiles(0.5, 
0.75, 0.9, 0.95, 0.99)
-                 .expiry(Duration.ofMinutes(10)).build().merge(config);
-           }
-           return config;
-         }
-       };
- 
-       // user specified registries
-       String userRegistryFactories =
-           context.getConfiguration().get(Property.GENERAL_MICROMETER_FACTORY);
- 
-       for (String factoryName : getTrimmedStrings(userRegistryFactories)) {
-         try {
-           MeterRegistry registry = getRegistryFromFactory(factoryName, 
context);
-           registry.config().commonTags(commonTags.values());
-           registry.config().meterFilter(replicationFilter);
-           addRegistry(registry);
-         } catch (ReflectiveOperationException ex) {
-           LOG.warn("Could not load registry {}", factoryName, ex);
-         }
-       }
+     commonTags = List.copyOf(tags);
  
-       pendingRegistries.forEach(registry -> composite.add(registry));
+     LOG.info("Metrics initialization. common tags: {}", commonTags);
  
-       LOG.info("Metrics initialization. Register producers: {}", producers);
-       producers.forEach(p -> p.registerMetrics(composite));
+     Metrics.globalRegistry.config().commonTags(commonTags);
  
-       Metrics.globalRegistry.add(composite);
+     boolean jvmMetricsEnabled =
+         
context.getConfiguration().getBoolean(Property.GENERAL_MICROMETER_JVM_METRICS_ENABLED);
  
-     } finally {
-       lock.unlock();
+     MeterFilter replicationFilter = new MeterFilter() {
+       @Override
+       public DistributionStatisticConfig configure(Meter.Id id,
+           @NonNull DistributionStatisticConfig config) {
+         if (id.getName().equals("replicationQueue")) {
+           return DistributionStatisticConfig.builder().percentiles(0.5, 0.75, 
0.9, 0.95, 0.99)
+               .expiry(Duration.ofMinutes(10)).build().merge(config);
+         }
+         return config;
+       }
+     };
+ 
+     // user specified registries
+     String userRegistryFactories =
+         context.getConfiguration().get(Property.GENERAL_MICROMETER_FACTORY);
+ 
+     for (String factoryName : getTrimmedStrings(userRegistryFactories)) {
+       try {
+         MeterRegistry registry = getRegistryFromFactory(factoryName, context);
+         registry.config().meterFilter(replicationFilter);
+         registry.config().commonTags(commonTags);
+         Metrics.globalRegistry.add(registry);
+       } catch (ReflectiveOperationException ex) {
+         LOG.warn("Could not load registry {}", factoryName, ex);
+       }
+     }
+ 
+     if (jvmMetricsEnabled) {
+       LOG.info("enabling detailed jvm, classloader, jvm gc and process 
metrics");
+       new ClassLoaderMetrics().bindTo(Metrics.globalRegistry);
+       new JvmMemoryMetrics().bindTo(Metrics.globalRegistry);
+       jvmGcMetrics = new JvmGcMetrics();
+       jvmGcMetrics.bindTo(Metrics.globalRegistry);
+       new ProcessorMetrics().bindTo(Metrics.globalRegistry);
+       new JvmThreadMetrics().bindTo(Metrics.globalRegistry);
      }
+ 
+     LOG.info("Metrics initialization. Register producers: {}", producers);
+     producers.forEach(p -> p.registerMetrics(Metrics.globalRegistry));
    }
  
 -  // support for org.apache.accumulo.core.metrics.MeterRegistryFactory can be 
removed in 3.1
    @VisibleForTesting
 -  @SuppressWarnings("deprecation")
    static MeterRegistry getRegistryFromFactory(final String factoryName, final 
ServerContext context)
        throws ReflectiveOperationException {
      try {
diff --cc 
server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
index df11e31fd3,b6130672e1..c128c19fea
--- 
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
+++ 
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionCoordinator.java
@@@ -18,12 -18,13 +18,13 @@@
   */
  package org.apache.accumulo.coordinator;
  
 -import static java.nio.charset.StandardCharsets.UTF_8;
 -import static 
org.apache.accumulo.core.util.UtilWaitThread.sleepUninterruptibly;
 -import static 
org.apache.accumulo.core.util.threads.ThreadPoolNames.COMPACTION_COORDINATOR_SUMMARY_POOL;
 +import static 
com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
  
  import java.net.UnknownHostException;
 +import java.util.ArrayList;
+ import java.util.Collection;
  import java.util.HashSet;
 +import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
@@@ -99,9 -99,9 +100,11 @@@ import com.github.benmanes.caffeine.cac
  import com.github.benmanes.caffeine.cache.Caffeine;
  import com.github.benmanes.caffeine.cache.LoadingCache;
  import com.google.common.collect.Sets;
 +import com.google.common.net.HostAndPort;
 +import com.google.common.util.concurrent.Uninterruptibles;
  
+ import io.micrometer.core.instrument.Tag;
+ 
  public class CompactionCoordinator extends AbstractServer
      implements CompactionCoordinatorService.Iface, LiveTServerSet.Listener {
  
@@@ -269,9 -283,7 +277,8 @@@
      }
  
      MetricsInfo metricsInfo = getContext().getMetricsInfo();
-     metricsInfo.addServiceTags(getApplicationName(), clientAddress, "");
 +    metricsInfo.addMetricsProducers(this);
-     metricsInfo.init();
+     metricsInfo.init(getServiceTags(clientAddress));
  
      // On a re-start of the coordinator it's possible that external 
compactions are in-progress.
      // Attempt to get the running compactions on the compactors and then 
resolve which tserver
diff --cc 
server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
index 777104d95a,c97d696a4a..b45a1879c1
--- 
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
+++ 
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
@@@ -29,8 -25,10 +29,9 @@@ import static org.apache.accumulo.core.
  import java.io.IOException;
  import java.io.UncheckedIOException;
  import java.net.UnknownHostException;
 -import java.security.SecureRandom;
  import java.time.Duration;
  import java.util.ArrayList;
+ import java.util.Collection;
  import java.util.List;
  import java.util.Map;
  import java.util.TreeMap;
@@@ -676,10 -693,9 +683,9 @@@ public class Compactor extends Abstract
      }
  
      MetricsInfo metricsInfo = getContext().getMetricsInfo();
-     metricsInfo.addServiceTags(getApplicationName(), clientAddress, 
queueName);
  
 -    metricsInfo.addMetricsProducers(this);
 +    metricsInfo.addMetricsProducers(this, pausedMetrics);
-     metricsInfo.init();
+     metricsInfo.init(getServiceTags(clientAddress));
  
      var watcher = new CompactionWatcher(getConfiguration());
      var schedExecutor = ThreadPools.getServerThreadPools()
diff --cc 
server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
index 3b34a0ff66,ce0e8682bb..077956b9bd
--- a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
+++ b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
@@@ -155,10 -167,10 +155,10 @@@ public class SimpleGarbageCollector ext
      }
  
      MetricsInfo metricsInfo = getContext().getMetricsInfo();
-     metricsInfo.addServiceTags(getApplicationName(), address, "");
  
 -    metricsInfo.addMetricsProducers(new GcMetrics(this));
 +    metricsInfo.addMetricsProducers(this, new GcMetrics(this));
-     metricsInfo.init();
+     metricsInfo.init(
+         MetricsInfo.serviceTags(getContext().getInstanceName(), 
getApplicationName(), address, ""));
      try {
        long delay = getStartDelay();
        log.debug("Sleeping for {} milliseconds before beginning garbage 
collection cycles", delay);
diff --cc server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
index 4ae6ee2ca2,80dd69b8cd..f25aa8f545
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
@@@ -497,9 -498,8 +497,9 @@@ public class Monitor extends AbstractSe
      }
  
      MetricsInfo metricsInfo = getContext().getMetricsInfo();
-     metricsInfo.addServiceTags(getApplicationName(), monitorHostAndPort, "");
 +    metricsInfo.addMetricsProducers(this);
-     metricsInfo.init();
+     metricsInfo.init(MetricsInfo.serviceTags(getContext().getInstanceName(), 
getApplicationName(),
+         monitorHostAndPort, ""));
  
      try {
        URL url = new URL(server.isSecure() ? "https" : "http", advertiseHost, 
server.getPort(), "/");
diff --cc 
server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 2e574f460f,1df158cf01..2b035b656d
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@@ -717,8 -772,9 +716,9 @@@ public class TabletServer extends Abstr
          this.resourceManager.getDataCache(), 
this.resourceManager.getSummaryCache());
  
      metricsInfo.addMetricsProducers(this, metrics, updateMetrics, 
scanMetrics, mincMetrics,
 -        ceMetrics, blockCacheMetrics);
 +        ceMetrics, pausedMetrics, blockCacheMetrics);
-     metricsInfo.init();
+     metricsInfo.init(MetricsInfo.serviceTags(context.getInstanceName(), 
getApplicationName(),
+         clientAddress, ""));
  
      this.compactionManager = new CompactionManager(() -> Iterators
          .transform(onlineTablets.snapshot().values().iterator(), 
Tablet::asCompactable),

Reply via email to