You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2020/09/16 07:40:52 UTC

[ignite] branch master updated: IGNITE-12922 SqlViewMetricExporterSpi moved to internal package (#8136)

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

nizhikov 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 ed86763  IGNITE-12922 SqlViewMetricExporterSpi moved to internal package (#8136)
ed86763 is described below

commit ed867633bf73525f25867c29603080f46cd0a4f9
Author: Nikolay <ni...@apache.org>
AuthorDate: Wed Sep 16 10:40:33 2020 +0300

    IGNITE-12922 SqlViewMetricExporterSpi moved to internal package (#8136)
---
 .../ignite/jdbc/thin/JdbcThinMetadataSelfTest.java |  5 +---
 .../processors/metric/GridMetricManager.java       | 27 +++++++++++++++++-
 .../metric/sql/MetricRegistryLocalSystemView.java  | 17 ++---------
 .../metric/sql/SqlViewMetricExporterSpi.java       | 12 +++-----
 .../apache/ignite/spi/metric/sql/package-info.java | 26 -----------------
 .../cache/metric/SqlViewExporterSpiTest.java       | 33 ----------------------
 .../processors/query/SqlSystemViewsSelfTest.java   | 10 +------
 7 files changed, 35 insertions(+), 95 deletions(-)

diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
index 3061b4a..c9ee62a 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
@@ -49,7 +49,6 @@ import org.apache.ignite.internal.IgniteVersionUtils;
 import org.apache.ignite.internal.jdbc2.JdbcUtils;
 import org.apache.ignite.internal.processors.query.QueryEntityEx;
 import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.Assert;
 import org.junit.Test;
@@ -82,9 +81,7 @@ public class JdbcThinMetadataSelfTest extends JdbcThinAbstractSelfTest {
     @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
         return super.getConfiguration(igniteInstanceName)
             .setSqlConfiguration(new SqlConfiguration()
-                .setSqlSchemas("PREDEFINED_SCHEMAS_1", "PREDEFINED_SCHEMAS_2")
-            )
-            .setMetricExporterSpi(new SqlViewMetricExporterSpi());
+                .setSqlSchemas("PREDEFINED_SCHEMAS_1", "PREDEFINED_SCHEMAS_2"));
     }
 
     /**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/GridMetricManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/GridMetricManager.java
index a22047f..17e6967 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/GridMetricManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/GridMetricManager.java
@@ -36,9 +36,11 @@ import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.function.Consumer;
+import java.util.function.Supplier;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.IgniteComponentType;
 import org.apache.ignite.internal.NodeStoppingException;
 import org.apache.ignite.internal.managers.GridManagerAdapter;
 import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
@@ -51,6 +53,7 @@ import org.apache.ignite.internal.processors.metric.impl.HitRateMetric;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
 import org.apache.ignite.internal.util.StripedExecutor;
 import org.apache.ignite.internal.util.future.GridCompoundFuture;
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -77,6 +80,9 @@ import static org.apache.ignite.internal.util.IgniteUtils.notifyListeners;
  * @see MetricRegistry
  */
 public class GridMetricManager extends GridManagerAdapter<MetricExporterSpi> implements ReadOnlyMetricManager {
+    /** Class name for a SQL view metrics exporter. */
+    public static final String SQL_SPI = "org.apache.ignite.internal.processors.metric.sql.SqlViewMetricExporterSpi";
+
     /** */
     public static final String ACTIVE_COUNT_DESC = "Approximate number of threads that are actively executing tasks.";
 
@@ -238,7 +244,26 @@ public class GridMetricManager extends GridManagerAdapter<MetricExporterSpi> imp
      * @param ctx Kernal context.
      */
     public GridMetricManager(GridKernalContext ctx) {
-        super(ctx, ctx.config().getMetricExporterSpi());
+        super(ctx, ((Supplier<MetricExporterSpi[]>)() -> {
+            MetricExporterSpi[] spi = ctx.config().getMetricExporterSpi();
+
+            if (!IgniteComponentType.INDEXING.inClassPath())
+                return spi;
+
+            MetricExporterSpi[] spiWithSql = new MetricExporterSpi[spi != null ? spi.length + 1 : 1];
+
+            if (!F.isEmpty(spi))
+                System.arraycopy(spi, 0, spiWithSql, 0, spi.length);
+
+            try {
+                spiWithSql[spiWithSql.length - 1] = U.newInstance(SQL_SPI);
+            }
+            catch (IgniteCheckedException e) {
+                throw new IgniteException(e);
+            }
+
+            return spiWithSql;
+        }).get());
 
         ctx.addNodeAttribute(ATTR_PHY_RAM, totalSysMemory());
 
diff --git a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/MetricRegistryLocalSystemView.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/metric/sql/MetricRegistryLocalSystemView.java
similarity index 82%
rename from modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/MetricRegistryLocalSystemView.java
rename to modules/indexing/src/main/java/org/apache/ignite/internal/processors/metric/sql/MetricRegistryLocalSystemView.java
index 60352df..f3dd81b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/MetricRegistryLocalSystemView.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/metric/sql/MetricRegistryLocalSystemView.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.spi.metric.sql;
+package org.apache.ignite.internal.processors.metric.sql;
 
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.function.Predicate;
 import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.processors.query.h2.sys.view.SqlAbstractLocalSystemView;
 import org.apache.ignite.spi.metric.Metric;
@@ -29,25 +28,19 @@ import org.h2.engine.Session;
 import org.h2.result.Row;
 import org.h2.result.SearchRow;
 import org.h2.value.Value;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * Sql view for exporting metrics.
  */
-public class MetricRegistryLocalSystemView extends SqlAbstractLocalSystemView {
+class MetricRegistryLocalSystemView extends SqlAbstractLocalSystemView {
     /** Metric registry. */
     private ReadOnlyMetricManager mreg;
 
-    /** Metric filter. */
-    private @Nullable Predicate<ReadOnlyMetricRegistry> filter;
-
     /**
      * @param ctx Context.
      * @param mreg Metric registry.
-     * @param filter Metric registry filter.
      */
-    public MetricRegistryLocalSystemView(GridKernalContext ctx, ReadOnlyMetricManager mreg,
-        @Nullable Predicate<ReadOnlyMetricRegistry> filter) {
+    MetricRegistryLocalSystemView(GridKernalContext ctx, ReadOnlyMetricManager mreg) {
         super(SqlViewMetricExporterSpi.SYS_VIEW_NAME, "Ignite metrics",
             ctx,
             newColumn("NAME", Value.STRING),
@@ -55,7 +48,6 @@ public class MetricRegistryLocalSystemView extends SqlAbstractLocalSystemView {
             newColumn("DESCRIPTION", Value.STRING));
 
         this.mreg = mreg;
-        this.filter = filter;
     }
 
     /** {@inheritDoc} */
@@ -72,9 +64,6 @@ public class MetricRegistryLocalSystemView extends SqlAbstractLocalSystemView {
                 while (grps.hasNext()) {
                     ReadOnlyMetricRegistry mreg = grps.next();
 
-                    if (filter != null && !filter.test(mreg))
-                        continue;
-
                     curr = mreg.iterator();
 
                     if (curr.hasNext())
diff --git a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/SqlViewMetricExporterSpi.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/metric/sql/SqlViewMetricExporterSpi.java
similarity index 90%
rename from modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/SqlViewMetricExporterSpi.java
rename to modules/indexing/src/main/java/org/apache/ignite/internal/processors/metric/sql/SqlViewMetricExporterSpi.java
index 2b0c692..04ea16c 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/SqlViewMetricExporterSpi.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/metric/sql/SqlViewMetricExporterSpi.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.spi.metric.sql;
+package org.apache.ignite.internal.processors.metric.sql;
 
 import java.util.function.Predicate;
 import org.apache.ignite.internal.GridKernalContext;
@@ -35,13 +35,10 @@ import static org.apache.ignite.internal.processors.query.QueryUtils.SCHEMA_SYS;
 /**
  * This SPI implementation exports metrics as SQL views.
  */
-public class SqlViewMetricExporterSpi extends IgniteSpiAdapter implements MetricExporterSpi {
+class SqlViewMetricExporterSpi extends IgniteSpiAdapter implements MetricExporterSpi {
     /** System view name. */
     public static final String SYS_VIEW_NAME = "METRICS";
 
-    /** Metric filter. */
-    private @Nullable Predicate<ReadOnlyMetricRegistry> filter;
-
     /** Metric Registry. */
     private ReadOnlyMetricManager mreg;
 
@@ -51,7 +48,7 @@ public class SqlViewMetricExporterSpi extends IgniteSpiAdapter implements Metric
 
         SchemaManager mgr = ((IgniteH2Indexing)ctx.query().getIndexing()).schemaManager();
 
-        mgr.createSystemView(SCHEMA_SYS, new MetricRegistryLocalSystemView(ctx, mreg, filter));
+        mgr.createSystemView(SCHEMA_SYS, new MetricRegistryLocalSystemView(ctx, mreg));
 
         if (log.isDebugEnabled())
             log.debug(SYS_VIEW_NAME + " SQL view for metrics created.");
@@ -74,7 +71,6 @@ public class SqlViewMetricExporterSpi extends IgniteSpiAdapter implements Metric
 
     /** {@inheritDoc} */
     @Override public void setExportFilter(Predicate<ReadOnlyMetricRegistry> filter) {
-        this.filter = filter;
+        // No-op.
     }
-
 }
diff --git a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/package-info.java b/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/package-info.java
deleted file mode 100644
index a4953fd..0000000
--- a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/package-info.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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 description. -->
- * Contains Sql view metric exporter implementation.
- */
-package org.apache.ignite.spi.metric.sql;
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
index 17eecd3..e1e132b 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
@@ -71,10 +71,8 @@ import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
 import org.apache.ignite.internal.processors.service.DummyService;
 import org.apache.ignite.internal.util.StripedExecutor;
 import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgnitePredicate;
 import org.apache.ignite.services.ServiceConfiguration;
-import org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi;
 import org.apache.ignite.spi.systemview.view.MetastorageView;
 import org.apache.ignite.spi.systemview.view.SqlSchemaView;
 import org.apache.ignite.spi.systemview.view.SystemView;
@@ -94,7 +92,6 @@ import static org.apache.ignite.internal.processors.query.QueryUtils.DFLT_SCHEMA
 import static org.apache.ignite.internal.processors.query.QueryUtils.SCHEMA_SYS;
 import static org.apache.ignite.internal.processors.query.h2.SchemaManager.SQL_SCHEMA_VIEW;
 import static org.apache.ignite.internal.util.IgniteUtils.toStringSafe;
-import static org.apache.ignite.internal.util.lang.GridFunc.t;
 import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
 import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
 import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
@@ -122,13 +119,6 @@ public class SqlViewExporterSpiTest extends AbstractExporterSpiTest {
                 new DataRegionConfiguration()
                     .setPersistenceEnabled(true)));
 
-        SqlViewMetricExporterSpi sqlSpi = new SqlViewMetricExporterSpi();
-
-        if (igniteInstanceName.endsWith("1"))
-            sqlSpi.setExportFilter(mgrp -> !mgrp.name().startsWith(FILTERED_PREFIX));
-
-        cfg.setMetricExporterSpi(sqlSpi);
-
         return cfg;
     }
 
@@ -198,29 +188,6 @@ public class SqlViewExporterSpiTest extends AbstractExporterSpiTest {
 
     /** */
     @Test
-    public void testFilterAndExport() throws Exception {
-        createAdditionalMetrics(ignite1);
-
-        List<List<?>> res = execute(ignite1,
-            "SELECT name, value, description FROM SYS.METRICS " +
-                "WHERE name LIKE 'other.prefix%' OR name LIKE '" + FILTERED_PREFIX + "%'");
-
-        Set<IgniteBiTuple<String, String>> expVals = new HashSet<>(asList(
-            t("other.prefix.test", "42"),
-            t("other.prefix.test2", "43"),
-            t("other.prefix2.test3", "44")
-        ));
-
-        Set<IgniteBiTuple<String, String>> vals = new HashSet<>();
-
-        for (List<?> row : res)
-            vals.add(t((String)row.get(0), (String)row.get(1)));
-
-        assertEquals(expVals, vals);
-    }
-
-    /** */
-    @Test
     public void testCachesView() throws Exception {
         Set<String> cacheNames = new HashSet<>(asList("cache-1", "cache-2"));
 
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/SqlSystemViewsSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/SqlSystemViewsSelfTest.java
index c4e0b12..5167651 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/SqlSystemViewsSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/SqlSystemViewsSelfTest.java
@@ -76,7 +76,6 @@ import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.lang.IgnitePredicate;
 import org.apache.ignite.lang.IgniteRunnable;
 import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode;
-import org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi;
 import org.apache.ignite.spi.systemview.view.SqlTableView;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.Assert;
@@ -994,16 +993,9 @@ public class SqlSystemViewsSelfTest extends AbstractIndexingCommonTest {
     }
 
     /** {@inheritDoc} */
-    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
-        return super.getConfiguration(igniteInstanceName)
-            .setMetricExporterSpi(new SqlViewMetricExporterSpi());
-    }
-
-    /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration() throws Exception {
         IgniteConfiguration cfg = super.getConfiguration()
-            .setCacheConfiguration(new CacheConfiguration().setName(DEFAULT_CACHE_NAME))
-            .setMetricExporterSpi(new SqlViewMetricExporterSpi());
+            .setCacheConfiguration(new CacheConfiguration().setName(DEFAULT_CACHE_NAME));
 
         if (isPersistenceEnabled) {
             cfg.setDataStorageConfiguration(new DataStorageConfiguration()