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 1d9a953 IGNITE-12286: IGNITE-12286: SqlViewExporter NPE Fix (#6972)
1d9a953 is described below
commit 1d9a953a8786997dbcb6b86566f09b3622503be8
Author: Nikolay <[email protected]>
AuthorDate: Sun Oct 13 12:34:35 2019 +0300
IGNITE-12286: IGNITE-12286: SqlViewExporter NPE Fix (#6972)
---
.../metric/sql/MetricRegistryLocalSystemView.java | 2 +-
.../cache/metric/SqlViewExporterSpiTest.java | 167 +++++++++++----------
2 files changed, 91 insertions(+), 78 deletions(-)
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/spi/metric/sql/MetricRegistryLocalSystemView.java
index 5a7066b..f44dfdb 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/MetricRegistryLocalSystemView.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/spi/metric/sql/MetricRegistryLocalSystemView.java
@@ -72,7 +72,7 @@ public class MetricRegistryLocalSystemView extends
SqlAbstractLocalSystemView {
while (grps.hasNext()) {
MetricRegistry mreg = grps.next();
- if (!filter.test(mreg))
+ if (filter != null && !filter.test(mreg))
continue;
curr = mreg.iterator();
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 2954e0e..986d840 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
@@ -72,7 +72,10 @@ import static
org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE;
/** */
public class SqlViewExporterSpiTest extends AbstractExporterSpiTest {
/** */
- private static IgniteEx ignite;
+ private static IgniteEx ignite0;
+
+ /** */
+ private static IgniteEx ignite1;
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String
igniteInstanceName) throws Exception {
@@ -85,7 +88,8 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
SqlViewMetricExporterSpi sqlSpi = new SqlViewMetricExporterSpi();
- sqlSpi.setExportFilter(mgrp ->
!mgrp.name().startsWith(FILTERED_PREFIX));
+ if (igniteInstanceName.endsWith("1"))
+ sqlSpi.setExportFilter(mgrp ->
!mgrp.name().startsWith(FILTERED_PREFIX));
cfg.setMetricExporterSpi(sqlSpi);
@@ -96,17 +100,18 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
@Override protected void beforeTestsStarted() throws Exception {
cleanPersistenceDir();
- ignite = startGrid(0);
+ ignite0 = startGrid(0);
+ ignite1 = startGrid(1);
- ignite.cluster().active(true);
+ ignite0.cluster().active(true);
}
/** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
- Collection<String> caches = ignite.cacheNames();
+ Collection<String> caches = ignite0.cacheNames();
for (String cache : caches)
- ignite.destroyCache(cache);
+ ignite0.destroyCache(cache);
}
/** {@inheritDoc} */
@@ -118,8 +123,17 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
/** */
@Test
- public void testDataRegionJmxMetrics() throws Exception {
- List<List<?>> res = execute(ignite,
+ public void testEmptyFilter() throws Exception {
+ List<List<?>> res = execute(ignite0, "SELECT * FROM SYS.METRICS");
+
+ assertNotNull(res);
+ assertFalse(res.isEmpty());
+ }
+
+ /** */
+ @Test
+ public void testDataRegionMetrics() throws Exception {
+ List<List<?>> res = execute(ignite0,
"SELECT REPLACE(name, 'io.dataregion.default.'), value,
description FROM SYS.METRICS");
Set<String> names = new HashSet<>();
@@ -137,10 +151,11 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
/** */
@Test
public void testFilterAndExport() throws Exception {
- createAdditionalMetrics(ignite);
+ createAdditionalMetrics(ignite1);
- List<List<?>> res = execute(ignite,
- "SELECT name, value, description FROM SYS.METRICS WHERE name LIKE
'other.prefix%'");
+ 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"),
@@ -162,11 +177,11 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
Set<String> cacheNames = new HashSet<>(asList("cache-1", "cache-2"));
for (String name : cacheNames)
- ignite.createCache(name);
+ ignite0.createCache(name);
- List<List<?>> caches = execute(ignite, "SELECT CACHE_NAME FROM
SYS.CACHES");
+ List<List<?>> caches = execute(ignite0, "SELECT CACHE_NAME FROM
SYS.CACHES");
- assertEquals(ignite.context().cache().cacheDescriptors().size(),
caches.size());
+ assertEquals(ignite0.context().cache().cacheDescriptors().size(),
caches.size());
for (List<?> row : caches)
cacheNames.remove(row.get(0));
@@ -180,11 +195,11 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
Set<String> grpNames = new HashSet<>(asList("grp-1", "grp-2"));
for (String grpName : grpNames)
- ignite.createCache(new CacheConfiguration<>("cache-" +
grpName).setGroupName(grpName));
+ ignite0.createCache(new CacheConfiguration<>("cache-" +
grpName).setGroupName(grpName));
- List<List<?>> grps = execute(ignite, "SELECT CACHE_GROUP_NAME FROM
SYS.CACHE_GROUPS");
+ List<List<?>> grps = execute(ignite0, "SELECT CACHE_GROUP_NAME FROM
SYS.CACHE_GROUPS");
- assertEquals(ignite.context().cache().cacheGroupDescriptors().size(),
grps.size());
+ assertEquals(ignite0.context().cache().cacheGroupDescriptors().size(),
grps.size());
for (List<?> row : grps)
grpNames.remove(row.get(0));
@@ -198,7 +213,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
CyclicBarrier barrier = new CyclicBarrier(6);
for (int i = 0; i < 5; i++) {
- ignite.compute().broadcastAsync(() -> {
+ ignite0.compute().broadcastAsync(() -> {
try {
barrier.await();
barrier.await();
@@ -211,7 +226,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
barrier.await();
- List<List<?>> tasks = execute(ignite,
+ List<List<?>> tasks = execute(ignite0,
"SELECT " +
" INTERNAL, " +
" AFFINITY_CACHE_NAME, " +
@@ -231,7 +246,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
assertEquals(-1, t.get(2));
assertTrue(t.get(3).toString().startsWith(getClass().getName()));
assertTrue(t.get(4).toString().startsWith(getClass().getName()));
- assertEquals(ignite.localNode().id(), t.get(5));
+ assertEquals(ignite0.localNode().id(), t.get(5));
assertEquals("0", t.get(6));
barrier.await();
@@ -246,9 +261,9 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
srvcCfg.setMaxPerNodeCount(1);
srvcCfg.setService(new DummyService());
- ignite.services().deploy(srvcCfg);
+ ignite0.services().deploy(srvcCfg);
- List<List<?>> srvs = execute(ignite,
+ List<List<?>> srvs = execute(ignite0,
"SELECT " +
" NAME, " +
" SERVICE_ID, " +
@@ -262,7 +277,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
" ORIGIN_NODE_ID " +
"FROM SYS.SERVICES");
- assertEquals(ignite.context().service().serviceDescriptors().size(),
srvs.size());
+ assertEquals(ignite0.context().service().serviceDescriptors().size(),
srvs.size());
List<?> sysView = srvs.iterator().next();
@@ -274,16 +289,16 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
/** */
@Test
public void testClientsConnections() throws Exception {
- String host =
ignite.configuration().getClientConnectorConfiguration().getHost();
+ String host =
ignite0.configuration().getClientConnectorConfiguration().getHost();
if (host == null)
- host = ignite.configuration().getLocalHost();
+ host = ignite0.configuration().getLocalHost();
- int port =
ignite.configuration().getClientConnectorConfiguration().getPort();
+ int port =
ignite0.configuration().getClientConnectorConfiguration().getPort();
try (IgniteClient client = Ignition.startClient(new
ClientConfiguration().setAddresses(host + ":" + port))) {
try (Connection conn = new
IgniteJdbcThinDriver().connect("jdbc:ignite:thin://" + host, new Properties()))
{
- List<List<?>> conns = execute(ignite, "SELECT * FROM
SYS.CLIENT_CONNECTIONS");
+ List<List<?>> conns = execute(ignite0, "SELECT * FROM
SYS.CLIENT_CONNECTIONS");
assertEquals(2, conns.size());
}
@@ -293,10 +308,10 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
/** */
@Test
public void testTransactions() throws Exception {
- IgniteCache<Integer, Integer> cache = ignite.createCache(new
CacheConfiguration<Integer, Integer>("c")
+ IgniteCache<Integer, Integer> cache = ignite0.createCache(new
CacheConfiguration<Integer, Integer>("c")
.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
- assertTrue(execute(ignite, "SELECT * FROM
SYS.TRANSACTIONS").isEmpty());
+ assertTrue(execute(ignite0, "SELECT * FROM
SYS.TRANSACTIONS").isEmpty());
CountDownLatch latch1 = new CountDownLatch(10);
CountDownLatch latch2 = new CountDownLatch(1);
@@ -304,7 +319,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
AtomicInteger cntr = new AtomicInteger();
GridTestUtils.runMultiThreadedAsync(() -> {
- try (Transaction tx =
ignite.transactions().withLabel("test").txStart(PESSIMISTIC, REPEATABLE_READ)) {
+ try (Transaction tx =
ignite0.transactions().withLabel("test").txStart(PESSIMISTIC, REPEATABLE_READ))
{
cache.put(cntr.incrementAndGet(), cntr.incrementAndGet());
cache.put(cntr.incrementAndGet(), cntr.incrementAndGet());
@@ -317,7 +332,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
}, 5, "xxx");
GridTestUtils.runMultiThreadedAsync(() -> {
- try (Transaction tx = ignite.transactions().txStart(OPTIMISTIC,
SERIALIZABLE)) {
+ try (Transaction tx = ignite0.transactions().txStart(OPTIMISTIC,
SERIALIZABLE)) {
cache.put(cntr.incrementAndGet(), cntr.incrementAndGet());
cache.put(cntr.incrementAndGet(), cntr.incrementAndGet());
@@ -331,13 +346,13 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
latch1.await(5, TimeUnit.SECONDS);
- List<List<?>> txs = execute(ignite, "SELECT * FROM SYS.TRANSACTIONS");
+ List<List<?>> txs = execute(ignite0, "SELECT * FROM SYS.TRANSACTIONS");
assertEquals(10, txs.size());
latch2.countDown();
- boolean res = waitForCondition(() -> execute(ignite, "SELECT * FROM
SYS.TRANSACTIONS").isEmpty(), 5_000);
+ boolean res = waitForCondition(() -> execute(ignite0, "SELECT * FROM
SYS.TRANSACTIONS").isEmpty(), 5_000);
assertTrue(res);
}
@@ -394,7 +409,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
Set<String> actViews = new HashSet<>();
- List<List<?>> res = execute(ignite, "SELECT * FROM SYS.VIEWS");
+ List<List<?>> res = execute(ignite0, "SELECT * FROM SYS.VIEWS");
for (List<?> row : res)
actViews.add(row.get(0).toString());
@@ -405,11 +420,11 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
/** */
@Test
public void testTable() throws Exception {
- assertTrue(execute(ignite, "SELECT * FROM SYS.TABLES").isEmpty());
+ assertTrue(execute(ignite0, "SELECT * FROM SYS.TABLES").isEmpty());
- execute(ignite, "CREATE TABLE T1(ID LONG PRIMARY KEY, NAME VARCHAR)");
+ execute(ignite0, "CREATE TABLE T1(ID LONG PRIMARY KEY, NAME VARCHAR)");
- List<List<?>> res = execute(ignite, "SELECT * FROM SYS.TABLES");
+ List<List<?>> res = execute(ignite0, "SELECT * FROM SYS.TABLES");
assertEquals(1, res.size());
@@ -428,31 +443,31 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
assertEquals("java.lang.Long", tbl.get(7)); // KEY_TYPE_NAME
assertNotNull(tbl.get(8)); // VALUE_TYPE_NAME
- execute(ignite, "CREATE TABLE T2(ID LONG PRIMARY KEY, NAME VARCHAR)");
+ execute(ignite0, "CREATE TABLE T2(ID LONG PRIMARY KEY, NAME VARCHAR)");
- assertEquals(2, execute(ignite, "SELECT * FROM SYS.TABLES").size());
+ assertEquals(2, execute(ignite0, "SELECT * FROM SYS.TABLES").size());
- execute(ignite, "DROP TABLE T1");
- execute(ignite, "DROP TABLE T2");
+ execute(ignite0, "DROP TABLE T1");
+ execute(ignite0, "DROP TABLE T2");
- assertTrue(execute(ignite, "SELECT * FROM SYS.TABLES").isEmpty());
+ assertTrue(execute(ignite0, "SELECT * FROM SYS.TABLES").isEmpty());
}
/** */
@Test
public void testTableColumns() throws Exception {
- assertTrue(execute(ignite, "SELECT * FROM
SYS.TABLE_COLUMNS").isEmpty());
+ assertTrue(execute(ignite0, "SELECT * FROM
SYS.TABLE_COLUMNS").isEmpty());
- execute(ignite, "CREATE TABLE T1(ID LONG PRIMARY KEY, NAME
VARCHAR(40))");
+ execute(ignite0, "CREATE TABLE T1(ID LONG PRIMARY KEY, NAME
VARCHAR(40))");
- Set<?> actCols = execute(ignite, "SELECT * FROM SYS.TABLE_COLUMNS")
+ Set<?> actCols = execute(ignite0, "SELECT * FROM SYS.TABLE_COLUMNS")
.stream()
.map(l -> l.get(0))
.collect(Collectors.toSet());
assertEquals(new HashSet<>(asList("ID", "NAME", "_KEY", "_VAL")),
actCols);
- execute(ignite, "CREATE TABLE T2(ID LONG PRIMARY KEY, NAME
VARCHAR(50))");
+ execute(ignite0, "CREATE TABLE T2(ID LONG PRIMARY KEY, NAME
VARCHAR(50))");
List<List<?>> expRes = asList(
asList("ID", "T1", "PUBLIC", false, false, "null", true, true, -1,
-1, Long.class.getName()),
@@ -465,20 +480,20 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
asList("_VAL", "T2", "PUBLIC", false, false, null, true, false,
-1, -1, null)
);
- List<List<?>> res = execute(ignite, "SELECT * FROM SYS.TABLE_COLUMNS
ORDER BY TABLE_NAME, COLUMN_NAME");
+ List<List<?>> res = execute(ignite0, "SELECT * FROM SYS.TABLE_COLUMNS
ORDER BY TABLE_NAME, COLUMN_NAME");
assertEquals(expRes, res);
- execute(ignite, "DROP TABLE T1");
- execute(ignite, "DROP TABLE T2");
+ execute(ignite0, "DROP TABLE T1");
+ execute(ignite0, "DROP TABLE T2");
- assertTrue(execute(ignite, "SELECT * FROM
SYS.TABLE_COLUMNS").isEmpty());
+ assertTrue(execute(ignite0, "SELECT * FROM
SYS.TABLE_COLUMNS").isEmpty());
}
/** */
@Test
public void testViewColumns() throws Exception {
- execute(ignite, "SELECT * FROM SYS.VIEW_COLUMNS");
+ execute(ignite0, "SELECT * FROM SYS.VIEW_COLUMNS");
List<List<?>> expRes = asList(
asList("CONNECTION_ID", "CLIENT_CONNECTIONS", SCHEMA_SYS, "null",
true, 19L, 0, Long.class.getName()),
@@ -494,7 +509,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
String.class.getName())
);
- List<List<?>> res = execute(ignite, "SELECT * FROM SYS.VIEW_COLUMNS
WHERE VIEW_NAME = 'CLIENT_CONNECTIONS'");
+ List<List<?>> res = execute(ignite0, "SELECT * FROM SYS.VIEW_COLUMNS
WHERE VIEW_NAME = 'CLIENT_CONNECTIONS'");
assertEquals(expRes, res);
}
@@ -502,31 +517,29 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
/** */
@Test
public void testContinuousQuery() throws Exception {
- try(IgniteEx remoteNode = startGrid(1)) {
- IgniteCache<Integer, Integer> cache =
ignite.createCache("cache-1");
-
- assertTrue(execute(ignite, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
- assertTrue(execute(remoteNode, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
-
- try(QueryCursor qry = cache.query(new ContinuousQuery<>()
- .setInitialQuery(new ScanQuery<>())
- .setPageSize(100)
- .setTimeInterval(1000)
- .setLocalListener(evts -> {
- // No-op.
- })
- .setRemoteFilterFactory(() -> evt -> true)
- )) {
- for (int i=0; i<100; i++)
- cache.put(i, i);
-
- checkContinuouQueryView(ignite, true);
- checkContinuouQueryView(remoteNode, false);
- }
-
- assertTrue(execute(ignite, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
- assertTrue(execute(remoteNode, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
+ IgniteCache<Integer, Integer> cache = ignite0.createCache("cache-1");
+
+ assertTrue(execute(ignite0, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
+ assertTrue(execute(ignite1, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
+
+ try (QueryCursor qry = cache.query(new ContinuousQuery<>()
+ .setInitialQuery(new ScanQuery<>())
+ .setPageSize(100)
+ .setTimeInterval(1000)
+ .setLocalListener(evts -> {
+ // No-op.
+ })
+ .setRemoteFilterFactory(() -> evt -> true)
+ )) {
+ for (int i = 0; i < 100; i++)
+ cache.put(i, i);
+
+ checkContinuouQueryView(ignite0, true);
+ checkContinuouQueryView(ignite1, false);
}
+
+ assertTrue(execute(ignite0, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
+ assertTrue(execute(ignite1, "SELECT * FROM
SYS.QUERY_CONTINUOUS").isEmpty());
}
/** */
@@ -550,7 +563,7 @@ public class SqlViewExporterSpiTest extends
AbstractExporterSpiTest {
assertEquals("cache-1", cq.get(0));
assertEquals(100, cq.get(1));
assertEquals(1000L, cq.get(2));
- assertEquals(ignite.localNode().id(), cq.get(3));
+ assertEquals(ignite0.localNode().id(), cq.get(3));
if (loc)
assertTrue(cq.get(4).toString().startsWith(getClass().getName()));