This is an automated email from the ASF dual-hosted git repository.

arina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git

commit 84450d8b81e690b003bb1bfac7a986f3db88dca5
Author: Bohdan Kazydub <bohdan.kazy...@gmail.com>
AuthorDate: Thu Apr 9 16:46:18 2020 +0300

    DRILL-7694: Register drill.queries.* counter metrics on Drillbit startup
    
    closes #2050
---
 .../apache/drill/exec/metrics/DrillCounters.java   | 73 ++++++++++++++++++++++
 .../apache/drill/exec/server/DrillbitContext.java  |  8 +++
 .../exec/work/foreman/QueryStateProcessor.java     | 34 ++++------
 3 files changed, 94 insertions(+), 21 deletions(-)

diff --git 
a/common/src/main/java/org/apache/drill/exec/metrics/DrillCounters.java 
b/common/src/main/java/org/apache/drill/exec/metrics/DrillCounters.java
new file mode 100644
index 0000000..29685ae
--- /dev/null
+++ b/common/src/main/java/org/apache/drill/exec/metrics/DrillCounters.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.drill.exec.metrics;
+
+import com.codahale.metrics.Counter;
+
+/**
+ * Holder containing query state counter metrics.
+ */
+public class DrillCounters {
+
+  private static final DrillCounters INSTANCE = new DrillCounters();
+
+  private static final String QUERIES_METRICS_PREFIX = "drill.queries.";
+
+  private final Counter planningQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "planning");
+  private final Counter enqueuedQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "enqueued");
+  private final Counter runningQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "running");
+  private final Counter completedQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "completed");
+  private final Counter succeededQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "succeeded");
+  private final Counter failedQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "failed");
+  private final Counter canceledQueries = 
DrillMetrics.getRegistry().counter(QUERIES_METRICS_PREFIX + "canceled");
+
+  private DrillCounters() {
+  }
+
+  public static DrillCounters getInstance() {
+    return INSTANCE;
+  }
+
+  public Counter getPlanningQueries() {
+    return planningQueries;
+  }
+
+  public Counter getEnqueuedQueries() {
+    return enqueuedQueries;
+  }
+
+  public Counter getRunningQueries() {
+    return runningQueries;
+  }
+
+  public Counter getCompletedQueries() {
+    return completedQueries;
+  }
+
+  public Counter getSucceededQueries() {
+    return succeededQueries;
+  }
+
+  public Counter getFailedQueries() {
+    return failedQueries;
+  }
+
+  public Counter getCanceledQueries() {
+    return canceledQueries;
+  }
+}
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
index 36c7b42..0afd984 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
@@ -28,6 +28,7 @@ import org.apache.drill.exec.coord.ClusterCoordinator;
 import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry;
 import org.apache.drill.exec.expr.fn.registry.RemoteFunctionRegistry;
 import org.apache.drill.exec.memory.BufferAllocator;
+import org.apache.drill.exec.metrics.DrillCounters;
 import org.apache.drill.exec.physical.impl.OperatorCreatorRegistry;
 import org.apache.drill.exec.planner.PhysicalPlanReader;
 import org.apache.drill.exec.planner.sql.DrillOperatorTable;
@@ -77,6 +78,7 @@ public class DrillbitContext implements AutoCloseable {
   private final QueryProfileStoreContext profileStoreContext;
   private ResourceManager resourceManager;
   private final MetastoreRegistry metastoreRegistry;
+  private final DrillCounters counters;
 
   public DrillbitContext(
       DrillbitEndpoint endpoint,
@@ -125,6 +127,8 @@ public class DrillbitContext implements AutoCloseable {
     //This profile store context is built from the profileStoreProvider
     profileStoreContext = new QueryProfileStoreContext(config, 
profileStoreProvider, coord);
     this.metastoreRegistry = new MetastoreRegistry(config);
+
+    this.counters = DrillCounters.getInstance();
   }
 
   public QueryProfileStoreContext getProfileStoreContext() {
@@ -310,4 +314,8 @@ public class DrillbitContext implements AutoCloseable {
   public MetastoreRegistry getMetastoreRegistry() {
     return metastoreRegistry;
   }
+
+  public DrillCounters getCounters() {
+    return counters;
+  }
 }
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java
index 5c6836f..3bc75c3 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryStateProcessor.java
@@ -19,12 +19,12 @@ package org.apache.drill.exec.work.foreman;
 
 import org.apache.drill.common.EventProcessor;
 import org.apache.drill.exec.ExecConstants;
-import org.apache.drill.exec.metrics.DrillMetrics;
 import org.apache.drill.exec.proto.UserBitShared.QueryResult.QueryState;
 import org.apache.drill.exec.server.DrillbitContext;
 import org.apache.drill.exec.work.foreman.Foreman.ForemanResult;
 
-import com.codahale.metrics.Counter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Is responsible for query transition from one state to another,
@@ -32,15 +32,7 @@ import com.codahale.metrics.Counter;
  */
 public class QueryStateProcessor implements AutoCloseable {
 
-  private static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(QueryStateProcessor.class);
-
-  private static final Counter planningQueries = 
DrillMetrics.getRegistry().counter("drill.queries.planning");
-  private static final Counter enqueuedQueries = 
DrillMetrics.getRegistry().counter("drill.queries.enqueued");
-  private static final Counter runningQueries = 
DrillMetrics.getRegistry().counter("drill.queries.running");
-  private static final Counter completedQueries = 
DrillMetrics.getRegistry().counter("drill.queries.completed");
-  private static final Counter succeededQueries = 
DrillMetrics.getRegistry().counter("drill.queries.succeeded");
-  private static final Counter failedQueries = 
DrillMetrics.getRegistry().counter("drill.queries.failed");
-  private static final Counter canceledQueries = 
DrillMetrics.getRegistry().counter("drill.queries.canceled");
+  private static final Logger logger = 
LoggerFactory.getLogger(QueryStateProcessor.class);
 
   private final StateSwitch stateSwitch = new StateSwitch();
 
@@ -176,18 +168,18 @@ public class QueryStateProcessor implements AutoCloseable 
{
 
     switch (state) {
       case FAILED:
-        failedQueries.inc();
+        drillbitContext.getCounters().getFailedQueries().inc();
         break;
       case CANCELED:
-        canceledQueries.inc();
+        drillbitContext.getCounters().getCanceledQueries().inc();
         break;
       case COMPLETED:
-        succeededQueries.inc();
+        drillbitContext.getCounters().getSucceededQueries().inc();
         break;
     }
 
-    runningQueries.dec();
-    completedQueries.inc();
+    drillbitContext.getCounters().getRunningQueries().dec();
+    drillbitContext.getCounters().getCompletedQueries().inc();
   }
 
 
@@ -195,10 +187,10 @@ public class QueryStateProcessor implements AutoCloseable 
{
     switch (newState) {
       case PLANNING:
         queryManager.markStartTime();
-        runningQueries.inc();
+        drillbitContext.getCounters().getRunningQueries().inc();
 
         recordNewState(newState);
-        planningQueries.inc();
+        drillbitContext.getCounters().getPlanningQueries().inc();
         return;
       case CANCELLATION_REQUESTED:
         wrapUpCancellation();
@@ -208,12 +200,12 @@ public class QueryStateProcessor implements AutoCloseable 
{
   }
 
   private void planning(final QueryState newState, final Exception exception) {
-    planningQueries.dec();
+    drillbitContext.getCounters().getPlanningQueries().dec();
     queryManager.markPlanningEndTime();
     switch (newState) {
       case ENQUEUED:
         recordNewState(newState);
-        enqueuedQueries.inc();
+        drillbitContext.getCounters().getEnqueuedQueries().inc();
         return;
       case CANCELLATION_REQUESTED:
         wrapUpCancellation();
@@ -225,7 +217,7 @@ public class QueryStateProcessor implements AutoCloseable {
   }
 
   private void enqueued(final QueryState newState, final Exception exception) {
-    enqueuedQueries.dec();
+    drillbitContext.getCounters().getEnqueuedQueries().dec();
     queryManager.markQueueWaitEndTime();
     switch (newState) {
       case STARTING:

Reply via email to