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

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


The following commit(s) were added to refs/heads/master by this push:
     new ad02c96e062 IGNITE-20382 SQL Calcite: Add metrics for 
CalciteQueryExecutor thread pool - Fixes #10933.
ad02c96e062 is described below

commit ad02c96e062e78b1292eb3cc6f4102b5076eabc1
Author: Aleksey Plekhanov <plehanov.a...@gmail.com>
AuthorDate: Mon Sep 25 17:48:47 2023 +0300

    IGNITE-20382 SQL Calcite: Add metrics for CalciteQueryExecutor thread pool 
- Fixes #10933.
    
    Signed-off-by: Aleksey Plekhanov <plehanov.a...@gmail.com>
---
 .../query/calcite/exec/QueryTaskExecutorImpl.java  | 22 +++++++++++++---------
 .../integration/SqlDiagnosticIntegrationTest.java  | 20 ++++++++++++++++++++
 2 files changed, 33 insertions(+), 9 deletions(-)

diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
index c572901afbc..c22714783d7 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
@@ -17,20 +17,22 @@
 
 package org.apache.ignite.internal.processors.query.calcite.exec;
 
-import java.util.Objects;
 import java.util.UUID;
 import org.apache.ignite.internal.GridKernalContext;
-import 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor;
 import 
org.apache.ignite.internal.processors.query.calcite.util.AbstractService;
-import org.apache.ignite.internal.processors.query.calcite.util.Commons;
-import org.apache.ignite.internal.util.StripedExecutor;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.thread.IgniteStripedThreadPoolExecutor;
 
+import static 
org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
+import static 
org.apache.ignite.internal.processors.pool.PoolProcessor.THREAD_POOLS;
+
 /**
- * TODO use {@link StripedExecutor}, registered in core pols.
+ * Query task executor.
  */
 public class QueryTaskExecutorImpl extends AbstractService implements 
QueryTaskExecutor, Thread.UncaughtExceptionHandler {
+    /** */
+    public static final String THREAD_POOL_NAME = "CalciteQueryExecutor";
+
     /** */
     private IgniteStripedThreadPoolExecutor stripedThreadPoolExecutor;
 
@@ -82,16 +84,18 @@ public class QueryTaskExecutorImpl extends AbstractService 
implements QueryTaskE
     @Override public void onStart(GridKernalContext ctx) {
         exceptionHandler(ctx.uncaughtExceptionHandler());
 
-        CalciteQueryProcessor proc = 
Objects.requireNonNull(Commons.lookupComponent(ctx, 
CalciteQueryProcessor.class));
-
-        stripedThreadPoolExecutor(new IgniteStripedThreadPoolExecutor(
+        IgniteStripedThreadPoolExecutor executor = new 
IgniteStripedThreadPoolExecutor(
             ctx.config().getQueryThreadPoolSize(),
             ctx.igniteInstanceName(),
             "calciteQry",
             this,
             false,
             0
-        ));
+        );
+
+        stripedThreadPoolExecutor(executor);
+
+        
executor.registerMetrics(ctx.metric().registry(metricName(THREAD_POOLS, 
THREAD_POOL_NAME)));
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlDiagnosticIntegrationTest.java
 
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlDiagnosticIntegrationTest.java
index 25c702bac5c..f005d69c479 100644
--- 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlDiagnosticIntegrationTest.java
+++ 
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/SqlDiagnosticIntegrationTest.java
@@ -53,10 +53,12 @@ import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.cache.query.GridCacheQueryType;
 import org.apache.ignite.internal.processors.metric.MetricRegistry;
 import 
org.apache.ignite.internal.processors.performancestatistics.AbstractPerformanceStatisticsTest;
+import org.apache.ignite.internal.processors.pool.PoolProcessor;
 import org.apache.ignite.internal.processors.query.IgniteSQLException;
 import org.apache.ignite.internal.processors.query.QueryUtils;
 import org.apache.ignite.internal.processors.query.calcite.Query;
 import org.apache.ignite.internal.processors.query.calcite.QueryRegistry;
+import 
org.apache.ignite.internal.processors.query.calcite.exec.QueryTaskExecutorImpl;
 import org.apache.ignite.internal.processors.security.SecurityContext;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -73,6 +75,7 @@ import static 
org.apache.ignite.internal.processors.authentication.Authenticatio
 import static 
org.apache.ignite.internal.processors.authentication.AuthenticationProcessorSelfTest.withSecurityContextOnAllNodes;
 import static 
org.apache.ignite.internal.processors.authentication.User.DFAULT_USER_NAME;
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.SQL_FIELDS;
+import static 
org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
 import static 
org.apache.ignite.internal.processors.performancestatistics.AbstractPerformanceStatisticsTest.cleanPerformanceStatisticsDir;
 import static 
org.apache.ignite.internal.processors.performancestatistics.AbstractPerformanceStatisticsTest.startCollectStatistics;
 import static 
org.apache.ignite.internal.processors.performancestatistics.AbstractPerformanceStatisticsTest.stopCollectStatisticsAndRead;
@@ -302,6 +305,23 @@ public class SqlDiagnosticIntegrationTest extends 
AbstractBasicIntegrationTest {
         assertEquals(0, ((LongMetric)mreg1.findMetric("canceled")).value());
     }
 
+    /** */
+    @Test
+    public void testThreadPoolMetrics() {
+        String regName = metricName(PoolProcessor.THREAD_POOLS, 
QueryTaskExecutorImpl.THREAD_POOL_NAME);
+        MetricRegistry mreg = client.context().metric().registry(regName);
+
+        LongMetric tasksCnt = mreg.findMetric("CompletedTaskCount");
+
+        tasksCnt.reset();
+
+        assertEquals(0, tasksCnt.value());
+
+        sql("SELECT 'test'");
+
+        assertTrue(tasksCnt.value() > 0);
+    }
+
     /** */
     @Test
     public void testPerformanceStatistics() throws Exception {

Reply via email to