You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by lx...@apache.org on 2018/04/06 00:04:06 UTC

[3/5] helix git commit: Add TotalEventCount and TotalHandledEventCount metrics into ZkClientMonitor Mbean.

Add TotalEventCount and TotalHandledEventCount metrics into ZkClientMonitor Mbean.


Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/5839b392
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/5839b392
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/5839b392

Branch: refs/heads/master
Commit: 5839b392b31d1768786280fadaff7455c04f9e11
Parents: 3561845
Author: Lei Xia <lx...@linkedin.com>
Authored: Fri Mar 2 16:03:37 2018 -0800
Committer: Lei Xia <lx...@linkedin.com>
Committed: Thu Apr 5 16:41:20 2018 -0700

----------------------------------------------------------------------
 .../helix/manager/zk/CallbackHandler.java       | 70 ++++++++++----------
 .../manager/zk/zookeeper/ZkEventThread.java     | 11 ++-
 .../monitoring/mbeans/ZkClientMonitor.java      | 18 +++++
 .../monitoring/mbeans/ZkClientMonitorMBean.java |  2 +
 4 files changed, 65 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/5839b392/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java b/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
index 663fa32..f86b9e0 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
@@ -168,41 +168,41 @@ public class CallbackHandler implements IZkChildListener, IZkDataListener {
 
     Class listenerClass = null;
     switch (_changeType) {
-    case IDEAL_STATE:
-      listenerClass = IdealStateChangeListener.class;
-      break;
-    case INSTANCE_CONFIG:
-      if (_listener instanceof ConfigChangeListener) {
+      case IDEAL_STATE:
+        listenerClass = IdealStateChangeListener.class;
+        break;
+      case INSTANCE_CONFIG:
+        if (_listener instanceof ConfigChangeListener) {
+          listenerClass = ConfigChangeListener.class;
+        } else if (_listener instanceof InstanceConfigChangeListener) {
+          listenerClass = InstanceConfigChangeListener.class;
+        }
+        break;
+      case CLUSTER_CONFIG:
+        listenerClass = ClusterConfigChangeListener.class;
+        break;
+      case RESOURCE_CONFIG:
+        listenerClass = ResourceConfigChangeListener.class;
+        break;
+      case CONFIG:
         listenerClass = ConfigChangeListener.class;
-      } else if (_listener instanceof InstanceConfigChangeListener) {
-        listenerClass = InstanceConfigChangeListener.class;
-      }
-      break;
-    case CLUSTER_CONFIG:
-      listenerClass = ClusterConfigChangeListener.class;
-      break;
-    case RESOURCE_CONFIG:
-      listenerClass = ResourceConfigChangeListener.class;
-      break;
-    case CONFIG:
-      listenerClass = ConfigChangeListener.class;
-      break;
-    case LIVE_INSTANCE:
-      listenerClass = LiveInstanceChangeListener.class;
-      break;
-    case CURRENT_STATE:
-      listenerClass = CurrentStateChangeListener.class;        ;
-      break;
-    case MESSAGE:
-    case MESSAGES_CONTROLLER:
-      listenerClass = MessageListener.class;
-      break;
-    case EXTERNAL_VIEW:
-    case TARGET_EXTERNAL_VIEW:
-      listenerClass = ExternalViewChangeListener.class;
-      break;
-    case CONTROLLER:
-      listenerClass = ControllerChangeListener.class;
+        break;
+      case LIVE_INSTANCE:
+        listenerClass = LiveInstanceChangeListener.class;
+        break;
+      case CURRENT_STATE:
+        listenerClass = CurrentStateChangeListener.class;        ;
+        break;
+      case MESSAGE:
+      case MESSAGES_CONTROLLER:
+        listenerClass = MessageListener.class;
+        break;
+      case EXTERNAL_VIEW:
+      case TARGET_EXTERNAL_VIEW:
+        listenerClass = ExternalViewChangeListener.class;
+        break;
+      case CONTROLLER:
+        listenerClass = ControllerChangeListener.class;
     }
 
     Method callbackMethod = listenerClass.getMethods()[0];
@@ -464,7 +464,7 @@ public class CallbackHandler implements IZkChildListener, IZkDataListener {
           case CURRENT_STATE:
           case IDEAL_STATE:
           case EXTERNAL_VIEW:
-          case TARGET_EXTERNAL_VIEW:{
+            case TARGET_EXTERNAL_VIEW:{
             // check if bucketized
             BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_zkClient);
             List<ZNRecord> records = baseAccessor.getChildren(path, null, 0);

http://git-wip-us.apache.org/repos/asf/helix/blob/5839b392/helix-core/src/main/java/org/apache/helix/manager/zk/zookeeper/ZkEventThread.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/zookeeper/ZkEventThread.java b/helix-core/src/main/java/org/apache/helix/manager/zk/zookeeper/ZkEventThread.java
index 968f7f3..21d5400 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/zookeeper/ZkEventThread.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/zookeeper/ZkEventThread.java
@@ -31,6 +31,9 @@ public class ZkEventThread extends Thread {
 
   private BlockingQueue<ZkEvent> _events = new LinkedBlockingQueue<>();
 
+  private long _totalEventCount = 0L;
+  private long _totalEventCountHandled = 0L;
+
   private static AtomicInteger _eventId = new AtomicInteger(0);
 
   public static abstract class ZkEvent {
@@ -62,6 +65,7 @@ public class ZkEventThread extends Thread {
         LOG.debug("Delivering event #" + eventId + " " + zkEvent);
         try {
           zkEvent.run();
+          _totalEventCountHandled ++;
         } catch (InterruptedException e) {
           interrupt();
         } catch (ZkInterruptedException e) {
@@ -80,10 +84,15 @@ public class ZkEventThread extends Thread {
     if (!isInterrupted()) {
       LOG.debug("New event: " + event);
       _events.add(event);
+      _totalEventCount ++;
     }
   }
 
-  public int getPendingEventsCount() {
+  public long getPendingEventsCount() {
     return _events.size();
   }
+
+  public long getTotalEventCount() { return _totalEventCount; }
+
+  public long getTotalHandledEventCount() { return _totalEventCountHandled; }
 }

http://git-wip-us.apache.org/repos/asf/helix/blob/5839b392/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitor.java b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitor.java
index 3e4022f..febc4f3 100644
--- a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitor.java
+++ b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitor.java
@@ -124,6 +124,24 @@ public class ZkClientMonitor implements ZkClientMonitorMBean {
     return -1;
   }
 
+  @Override
+  public long getTotalCallbackCounter() {
+    if (_zkEventThread != null) {
+      return _zkEventThread.getTotalEventCount();
+    }
+
+    return -1;
+  }
+
+  @Override
+  public long getTotalCallbackHandledCounter() {
+    if (_zkEventThread != null) {
+      return _zkEventThread.getTotalHandledEventCount();
+    }
+
+    return -1;
+  }
+
   private void record(String path, int bytes, long latencyMilliSec, boolean isFailure,
       boolean isRead) {
     for (ZkClientPathMonitor.PredefinedPath predefinedPath : ZkClientPathMonitor.PredefinedPath

http://git-wip-us.apache.org/repos/asf/helix/blob/5839b392/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitorMBean.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitorMBean.java b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitorMBean.java
index 17bfa25..67eaecb 100644
--- a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitorMBean.java
+++ b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ZkClientMonitorMBean.java
@@ -25,4 +25,6 @@ public interface ZkClientMonitorMBean extends SensorNameProvider {
   long getStateChangeEventCounter();
   long getDataChangeEventCounter();
   long getPendingCallbackGauge();
+  long getTotalCallbackCounter();
+  long getTotalCallbackHandledCounter();
 }