diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java index 24e7f5b180e..6f58b1d2a11 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServerMain.java @@ -130,7 +130,7 @@ public void runFromConfig(ServerConfig config) throws IOException, AdminServerEx } catch (MetricsProviderLifeCycleException error) { throw new IOException("Cannot boot MetricsProvider " + config.getMetricsProviderClassName(), error); } - ServerMetrics.metricsProviderInitialized(metricsProvider); + metricsProviderInitialized(); ProviderRegistry.initialize(); // Note that this thread isn't going to be doing anything else, // so rather than spawning another thread, we will just call @@ -295,4 +295,16 @@ public void close() { protected void serverStarted() { } + + private void metricsProviderInitialized() { + try { + ServerMetrics.metricsProviderInitialized(metricsProvider); + } catch (Throwable throwable) { + if (throwable instanceof ClassNotFoundException) { + LOG.warn("Metrics provider not found, metrics will not be reported"); + return; + } + throw throwable; + } + } }