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