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();
}