You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by jl...@apache.org on 2019/08/24 03:49:01 UTC
[incubator-pinot] 01/01: Add metric on Helix and Pinot controller
leadership
This is an automated email from the ASF dual-hosted git repository.
jlli pushed a commit to branch add-partition-leader-metrics
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit dd6118a5f8363937f606b54a4e2e9644156c4f30
Author: jackjlli <jl...@linkedin.com>
AuthorDate: Fri Aug 23 20:48:34 2019 -0700
Add metric on Helix and Pinot controller leadership
---
.../java/org/apache/pinot/common/metrics/ControllerGauge.java | 6 ++++++
.../java/org/apache/pinot/controller/LeadControllerManager.java | 9 +++++++++
2 files changed, 15 insertions(+)
diff --git a/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerGauge.java b/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerGauge.java
index 97fc4b6..4b69905 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerGauge.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerGauge.java
@@ -48,6 +48,12 @@ public enum ControllerGauge implements AbstractMetrics.Gauge {
// Pinot controller leader
PINOT_CONTROLLER_LEADER("PinotControllerLeader", true),
+ // Pinot partition leader
+ PINOT_CONTROLLER_PARTITION_LEADER("PinotControllerPartitionLeader", true),
+
+ // Pinot controller resource enabled
+ PINOT_LEAD_CONTROLLER_ENABLED("PinotLeadControllerEnabled", true),
+
// Number of extra live instances needed
SHORT_OF_LIVE_INSTANCES("ShortOfLiveInstances", false),
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java b/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java
index b03268c..1e67a11 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java
@@ -27,6 +27,7 @@ import org.apache.helix.PropertyKey;
import org.apache.helix.model.LiveInstance;
import org.apache.helix.model.ResourceConfig;
import org.apache.pinot.common.config.TableNameBuilder;
+import org.apache.pinot.common.metrics.ControllerGauge;
import org.apache.pinot.common.metrics.ControllerMeter;
import org.apache.pinot.common.metrics.ControllerMetrics;
import org.apache.pinot.common.utils.CommonConstants.Helix;
@@ -75,6 +76,7 @@ public class LeadControllerManager {
_controllerMetrics
.addMeteredGlobalValue(ControllerMeter.CONTROLLER_LEADERSHIP_CHANGE_WITHOUT_CALLBACK, 1L);
}
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_CONTROLLER_LEADER, 1L);
} else {
if (_amIHelixLeader) {
_amIHelixLeader = false;
@@ -82,6 +84,7 @@ public class LeadControllerManager {
_controllerMetrics
.addMeteredGlobalValue(ControllerMeter.CONTROLLER_LEADERSHIP_CHANGE_WITHOUT_CALLBACK, 1L);
}
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_CONTROLLER_LEADER, 0L);
}
LeadControllerManager.this.wait(CONTROLLER_LEADERSHIP_FETCH_INTERVAL_MS);
}
@@ -118,6 +121,7 @@ public class LeadControllerManager {
LOGGER.info("Add Partition: {} to LeadControllerManager", partitionName);
int partitionId = LeadControllerUtils.extractPartitionId(partitionName);
_leadForPartitions.add(partitionId);
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_CONTROLLER_PARTITION_LEADER, partitionName, 1L);
}
/**
@@ -128,6 +132,7 @@ public class LeadControllerManager {
LOGGER.info("Remove Partition: {} from LeadControllerManager", partitionName);
int partitionId = LeadControllerUtils.extractPartitionId(partitionName);
_leadForPartitions.remove(partitionId);
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_CONTROLLER_PARTITION_LEADER, partitionName, 0L);
}
/**
@@ -201,6 +206,7 @@ public class LeadControllerManager {
} else {
LOGGER.info("Already Helix leader. Duplicate notification");
}
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_CONTROLLER_LEADER, 1L);
} else {
if (_amIHelixLeader) {
_amIHelixLeader = false;
@@ -208,6 +214,7 @@ public class LeadControllerManager {
} else {
LOGGER.info("Already not Helix leader. Duplicate notification");
}
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_CONTROLLER_LEADER, 0L);
}
}
@@ -221,9 +228,11 @@ public class LeadControllerManager {
if (isLeadControllerResourceEnabled()) {
LOGGER.info("Lead controller resource is enabled.");
_isLeadControllerResourceEnabled = true;
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_LEAD_CONTROLLER_ENABLED, 1L);
} else {
LOGGER.info("Lead controller resource is disabled.");
_isLeadControllerResourceEnabled = false;
+ _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_LEAD_CONTROLLER_ENABLED, 0L);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org