From 59a952dcd2b15671bc2d9d9a906af0a99e26f19b Mon Sep 17 00:00:00 2001 From: Matteo Merli Date: Thu, 22 Jun 2017 18:08:08 -0700 Subject: [PATCH] Fixed problem in starting ZK server for standalone mode (#521) --- .../zookeeper/ZooKeeperServerAspect.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pulsar-zookeeper/src/main/java/com/yahoo/pulsar/zookeeper/ZooKeeperServerAspect.java b/pulsar-zookeeper/src/main/java/com/yahoo/pulsar/zookeeper/ZooKeeperServerAspect.java index 6c0ed807e4a..970b3133a67 100644 --- a/pulsar-zookeeper/src/main/java/com/yahoo/pulsar/zookeeper/ZooKeeperServerAspect.java +++ b/pulsar-zookeeper/src/main/java/com/yahoo/pulsar/zookeeper/ZooKeeperServerAspect.java @@ -31,15 +31,26 @@ import io.prometheus.client.Gauge; */ @Aspect public class ZooKeeperServerAspect { + private static boolean metricsRegistered = false; + @Pointcut("execution(org.apache.zookeeper.server.ZooKeeperServer.new(..))") - public void processRequest() { + public void zkServerConstructorPointCut() { } - @After("processRequest()") - public void timedProcessRequest(JoinPoint joinPoint) throws Throwable { + @After("zkServerConstructorPointCut()") + public void zkServerConstructor(JoinPoint joinPoint) throws Throwable { // ZooKeeperServer instance was created ZooKeeperServer zkServer = (ZooKeeperServer) joinPoint.getThis(); + synchronized (ZooKeeperServerAspect.class) { + if (metricsRegistered) { + // We can only register the metrics a single time for the process + return; + } + + metricsRegistered = true; + } + Gauge.build().name("zookeeper_server_znode_count").help("Number of z-nodes stored").create() .setChild(new Gauge.Child() { @Override @@ -80,5 +91,4 @@ public class ZooKeeperServerAspect { } }).register(); } - } -- GitLab