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 2021/06/29 16:34:19 UTC
[ignite] branch master updated: IGNITE-14990 Incorrect values of
cache, cache group, data region metrics after cluster re-activation (#9195)
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 3b7809b IGNITE-14990 Incorrect values of cache, cache group, data region metrics after cluster re-activation (#9195)
3b7809b is described below
commit 3b7809bc0d6d689cd19ecc0b1b33c78b18a1c56f
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Tue Jun 29 19:34:00 2021 +0300
IGNITE-14990 Incorrect values of cache, cache group, data region metrics after cluster re-activation (#9195)
---
.../processors/cache/CacheGroupContext.java | 8 +-
.../processors/cache/CacheGroupMetricsImpl.java | 14 +-
.../processors/cache/GridCacheAdapter.java | 10 +-
.../processors/cache/GridCacheProcessor.java | 12 +-
.../cache/persistence/DataRegionMetricsImpl.java | 5 +
.../IgniteCacheDatabaseSharedManager.java | 2 +
.../processors/metric/GridMetricManager.java | 13 ++
.../internal/metric/CacheMetricsAddRemoveTest.java | 86 ++++++--
.../metric/MetricsClusterActivationTest.java | 220 +++++++++++++++++++++
.../IgniteSequenceInternalCleanupTest.java | 4 +-
.../ignite/testsuites/IgniteBasicTestSuite.java | 2 +
11 files changed, 342 insertions(+), 34 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
index 8492982..82d64b3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
@@ -1305,12 +1305,14 @@ public class CacheGroupContext {
/**
* Removes statistics metrics registries.
+ *
+ * @param destroy Group destroy flag.
*/
- public void removeIOStatistic() {
+ public void removeIOStatistic(boolean destroy) {
if (statHolderData != IoStatisticsHolderNoOp.INSTANCE)
- ctx.kernalContext().metric().remove(statHolderData.metricRegistryName());
+ ctx.kernalContext().metric().remove(statHolderData.metricRegistryName(), destroy);
if (statHolderIdx != IoStatisticsHolderNoOp.INSTANCE)
- ctx.kernalContext().metric().remove(statHolderIdx.metricRegistryName());
+ ctx.kernalContext().metric().remove(statHolderIdx.metricRegistryName(), destroy);
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsImpl.java
index 3fa3bbd..ced091d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsImpl.java
@@ -493,17 +493,21 @@ public class CacheGroupMetricsImpl {
return sparseStorageSize == null ? 0 : sparseStorageSize.value();
}
- /** Removes all metric for cache group. */
- public void remove() {
+ /**
+ * Removes all metric for cache group.
+ *
+ * @param destroy Group destroy flag.
+ */
+ public void remove(boolean destroy) {
if (ctx.shared().kernalContext().isStopping())
return;
if (ctx.config().getNearConfiguration() != null)
- ctx.shared().kernalContext().metric().remove(cacheMetricsRegistryName(ctx.config().getName(), true));
+ ctx.shared().kernalContext().metric().remove(cacheMetricsRegistryName(ctx.config().getName(), true), destroy);
- ctx.shared().kernalContext().metric().remove(cacheMetricsRegistryName(ctx.config().getName(), false));
+ ctx.shared().kernalContext().metric().remove(cacheMetricsRegistryName(ctx.config().getName(), false), destroy);
- ctx.shared().kernalContext().metric().remove(metricGroupName());
+ ctx.shared().kernalContext().metric().remove(metricGroupName(), destroy);
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 8a8e204..c8aeae5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -650,10 +650,14 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
lastFut = null;
}
- /** Remove cache metrics. */
- public void removeMetrics() {
+ /**
+ * Remove cache metrics.
+ *
+ * @param destroy Group destroy flag.
+ */
+ public void removeMetrics(boolean destroy) {
if (!ctx.kernalContext().isStopping())
- ctx.kernalContext().metric().remove(cacheMetricsRegistryName(ctx.name(), isNear()));
+ ctx.kernalContext().metric().remove(cacheMetricsRegistryName(ctx.name(), isNear()), destroy);
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 6ef5047..5d129f0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -560,11 +560,9 @@ public class GridCacheProcessor extends GridProcessorAdapter {
}
}
- if (destroy) {
- grp.metrics().remove();
+ grp.metrics().remove(destroy);
- grp.removeIOStatistic();
- }
+ grp.removeIOStatistic(destroy);
sharedCtx.evict().cleanupRemovedGroup(grp.groupId());
@@ -1039,8 +1037,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
cache.stop();
- if (destroy)
- cache.removeMetrics();
+ cache.removeMetrics(destroy);
GridCacheContextInfo cacheInfo = new GridCacheContextInfo(ctx, false);
@@ -1056,8 +1053,7 @@ public class GridCacheProcessor extends GridProcessorAdapter {
if (dht != null) {
dht.stop();
- if (destroy)
- dht.removeMetrics();
+ dht.removeMetrics(destroy);
GridCacheContext<?, ?> dhtCtx = dht.context();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
index 1530d54..6d15f09 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
@@ -726,6 +726,11 @@ public class DataRegionMetricsImpl implements DataRegionMetrics {
metrics.reset();
}
+ /** Removes all metric for data region. */
+ public void remove() {
+ kernalCtx.metric().remove(metricRegistry().name(), false);
+ }
+
/** @param time Time to add to {@code totalThrottlingTime} metric in milliseconds. */
public void addThrottlingTime(long time) {
if (kernalCtx.performanceStatistics().enabled())
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
index af8f785..e7ee0b1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
@@ -1496,6 +1496,8 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
MBEAN_GROUP_NAME,
region.metrics().getName()
);
+
+ region.metrics().remove();
}
dataRegionMap.clear();
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 3527bc0..48c9aef 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
@@ -410,11 +410,24 @@ public class GridMetricManager extends GridManagerAdapter<MetricExporterSpi> imp
* @param regName Metric registry name.
*/
public void remove(String regName) {
+ remove(regName, true);
+ }
+
+ /**
+ * Removes metric registry.
+ *
+ * @param regName Metric registry name.
+ * @param removeCfg {@code True} if remove metric configurations.
+ */
+ public void remove(String regName, boolean removeCfg) {
GridCompoundFuture opsFut = new GridCompoundFuture<>();
registries.computeIfPresent(regName, (key, mreg) -> {
notifyListeners(mreg, metricRegRemoveLsnrs, log);
+ if (!removeCfg)
+ return null;
+
DistributedMetaStorage metastorage0 = metastorage;
if (metastorage0 == null)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/CacheMetricsAddRemoveTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/CacheMetricsAddRemoveTest.java
index 1cdb6de..0d71d6a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/metric/CacheMetricsAddRemoveTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/CacheMetricsAddRemoveTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.metric;
import java.util.Arrays;
+import com.google.common.collect.Iterators;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cluster.ClusterState;
import org.apache.ignite.configuration.CacheConfiguration;
@@ -28,6 +29,8 @@ import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.metric.GridMetricManager;
import org.apache.ignite.internal.processors.metric.MetricRegistry;
+import org.apache.ignite.internal.processors.metric.impl.MetricUtils;
+import org.apache.ignite.spi.metric.HistogramMetric;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.jetbrains.annotations.Nullable;
import org.junit.Test;
@@ -36,6 +39,7 @@ import org.junit.runners.Parameterized;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.cacheMetricsRegistryName;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
+import static org.junit.Assert.assertArrayEquals;
/** */
@RunWith(Parameterized.class)
@@ -46,6 +50,12 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
/** */
public static final String CACHE_PUTS = "CachePuts";
+ /** */
+ public static final String GET_TIME = "GetTime";
+
+ /** Test bounds. */
+ public static final long[] BOUNDS = new long[] {50, 100};
+
/** Cache modes. */
@Parameterized.Parameters(name = "cacheMode={0},nearEnabled={1}")
public static Iterable<Object[]> params() {
@@ -100,12 +110,12 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
/** */
@Test
- public void testCacheMetricsNotRemovedOnStop() throws Exception {
+ public void testCacheMetricsConfigurationNotRemovedOnStop() throws Exception {
String cachePrefix = cacheMetricsRegistryName("other-cache", false);
checkMetricsEmpty(cachePrefix);
- createCache("persisted", "other-cache");
+ createCache("persisted", "other-cache", null);
grid("client").cache("other-cache").put(1L, 1L);
@@ -114,17 +124,55 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
//Cache will be stopped during deactivation.
grid("client").cluster().state(ClusterState.INACTIVE);
+ checkMetricsEmpty(cachePrefix);
+
+ grid("client").cluster().state(ClusterState.ACTIVE);
+
+ assertEquals(1L, grid("client").cache("other-cache").get(1L));
+
checkMetricsNotEmpty(cachePrefix);
+ destroyCache();
+
+ checkMetricsEmpty(cachePrefix);
+ }
+
+ /** */
+ @Test
+ public void testCacheMetricsConfigurationNotRemovedOnStopTwoCachesPerGroup() throws Exception {
+ String cachePrefix = cacheMetricsRegistryName("other-cache", false);
+ String cachePrefix2 = cacheMetricsRegistryName("other-cache2", false);
+
+ checkMetricsEmpty(cachePrefix);
+ checkMetricsEmpty(cachePrefix2);
+
+ createCache("persisted", "other-cache", "testGroupName");
+ createCache("persisted", "other-cache2", "testGroupName");
+
+ grid("client").cache("other-cache").put(1L, 1L);
+ grid("client").cache("other-cache2").put(1L, 1L);
+
+ checkMetricsNotEmpty(cachePrefix);
+ checkMetricsNotEmpty(cachePrefix2);
+
+ //Cache will be stopped during deactivation.
+ grid("client").cluster().state(ClusterState.INACTIVE);
+
+ checkMetricsEmpty(cachePrefix);
+ checkMetricsEmpty(cachePrefix2);
+
grid("client").cluster().state(ClusterState.ACTIVE);
assertEquals(1L, grid("client").cache("other-cache").get(1L));
+ assertEquals(1L, grid("client").cache("other-cache2").get(1L));
checkMetricsNotEmpty(cachePrefix);
+ checkMetricsNotEmpty(cachePrefix2);
destroyCache();
checkMetricsEmpty(cachePrefix);
+ checkMetricsEmpty(cachePrefix2);
}
/** */
@@ -138,12 +186,13 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
}
/** */
- private void createCache() throws InterruptedException {
- createCache(null, null);
+ private void createCache() throws Exception {
+ createCache(null, null, null);
}
/** */
- private void createCache(@Nullable String dataRegionName, @Nullable String cacheName) throws InterruptedException {
+ private void createCache(@Nullable String dataRegionName, @Nullable String cacheName,
+ @Nullable String groupName) throws Exception {
CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
if (dataRegionName != null)
@@ -152,12 +201,25 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
if (cacheName != null)
ccfg.setName(cacheName);
+ if (groupName != null)
+ ccfg.setGroupName(groupName);
+
if (nearEnabled)
ccfg.setNearConfiguration(new NearCacheConfiguration());
grid("client").createCache(ccfg);
awaitPartitionMapExchange();
+
+ grid("client").context().metric().configureHistogram(
+ MetricUtils.metricName(cacheMetricsRegistryName(ccfg.getName(), false), GET_TIME),
+ BOUNDS);
+
+ if (nearEnabled) {
+ grid("client").context().metric().configureHistogram(
+ MetricUtils.metricName(cacheMetricsRegistryName(ccfg.getName(), true), GET_TIME),
+ BOUNDS);
+ }
}
/** */
@@ -169,12 +231,16 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
assertNotNull(mreg.findMetric(CACHE_GETS));
assertNotNull(mreg.findMetric(CACHE_PUTS));
+ assertNotNull(mreg.findMetric(GET_TIME));
+ assertArrayEquals(BOUNDS, mreg.<HistogramMetric>findMetric(GET_TIME).bounds());
if (nearEnabled) {
mreg = mmgr.registry(metricName(cachePrefix, "near"));
assertNotNull(mreg.findMetric(CACHE_GETS));
assertNotNull(mreg.findMetric(CACHE_PUTS));
+ assertNotNull(mreg.findMetric(GET_TIME));
+ assertArrayEquals(BOUNDS, mreg.<HistogramMetric>findMetric(GET_TIME).bounds());
}
}
}
@@ -184,16 +250,12 @@ public class CacheMetricsAddRemoveTest extends GridCommonAbstractTest {
for (int i = 0; i < 3; i++) {
GridMetricManager mmgr = metricManager(i);
- MetricRegistry mreg = mmgr.registry(cachePrefix);
-
- assertNull(mreg.findMetric(metricName(cachePrefix, CACHE_GETS)));
- assertNull(mreg.findMetric(metricName(cachePrefix, CACHE_PUTS)));
+ assertFalse(Iterators.tryFind(mmgr.iterator(), reg -> cachePrefix.equals(reg.name())).isPresent());
if (nearEnabled) {
- mreg = mmgr.registry(metricName(cachePrefix, "near"));
+ String regName = metricName(cachePrefix, "near");
- assertNull(mreg.findMetric(CACHE_GETS));
- assertNull(mreg.findMetric(CACHE_PUTS));
+ assertFalse(Iterators.tryFind(mmgr.iterator(), reg -> regName.equals(reg.name())).isPresent());
}
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsClusterActivationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsClusterActivationTest.java
new file mode 100644
index 0000000..5fa5341
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsClusterActivationTest.java
@@ -0,0 +1,220 @@
+/*
+ * 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.ignite.internal.metric;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.cache.persistence.DataRegion;
+import org.apache.ignite.internal.processors.metric.MetricRegistry;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
+import org.apache.ignite.spi.metric.IntMetric;
+import org.apache.ignite.spi.metric.LongMetric;
+import org.apache.ignite.spi.metric.ObjectMetric;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.apache.ignite.configuration.DataStorageConfiguration.DFLT_DATA_REG_DEFAULT_NAME;
+import static org.apache.ignite.internal.processors.cache.CacheGroupMetricsImpl.CACHE_GROUP_METRICS_PREFIX;
+import static org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl.DATAREGION_METRICS_PREFIX;
+import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.cacheMetricsRegistryName;
+import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
+
+/**
+ * Tests metrics on a cluster activation.
+ */
+@RunWith(Parameterized.class)
+public class MetricsClusterActivationTest extends GridCommonAbstractTest {
+ /** */
+ public static final int ENTRY_CNT = 50;
+
+ /** */
+ public static final int BACKUPS = 2;
+
+ /** Persistence enabled flag. */
+ @Parameterized.Parameter
+ public boolean isPersistenceEnabled;
+
+ /** @return Test parameters. */
+ @Parameterized.Parameters(name = "isPersistenceEnabled={0}")
+ public static Collection<?> parameters() {
+ return Arrays.asList(new Object[][] {{false}, {true}});
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ cfg.setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setPersistenceEnabled(isPersistenceEnabled)
+ .setMetricsEnabled(true))
+ );
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ if (isPersistenceEnabled)
+ cleanPersistenceDir();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ stopAllGrids();
+
+ if (isPersistenceEnabled)
+ cleanPersistenceDir();
+ }
+
+ /** @throws Exception If failed. */
+ @Test
+ public void testReActivate() throws Exception {
+ IgniteEx ignite = startGrids(3);
+
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ IgniteCache<Object, Object> cache = ignite.getOrCreateCache(
+ new CacheConfiguration<>(DEFAULT_CACHE_NAME)
+ .setStatisticsEnabled(true)
+ .setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC)
+ .setBackups(BACKUPS));
+
+ for (int i = 0; i < ENTRY_CNT; i++)
+ cache.put(i, i);
+
+ // Pause rebalance to check instant partitions states.
+ grid(0).rebalanceEnabled(false);
+ grid(1).rebalanceEnabled(false);
+ stopGrid(2);
+
+ checkMetrics(true);
+
+ for (int i = 0; i < 3; i++) {
+ ignite.cluster().state(ClusterState.INACTIVE);
+
+ checkMetrics(false);
+
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ checkMetrics(isPersistenceEnabled);
+ }
+ }
+
+ /** Checks metrics. */
+ private void checkMetrics(boolean expEntries) throws IgniteCheckedException {
+ for (IgniteEx ignite : F.transform(G.allGrids(), ignite -> (IgniteEx)ignite)) {
+ checkDataRegionMetrics(ignite);
+
+ checkCacheGroupsMetrics(ignite);
+
+ checkCacheMetrics(ignite, expEntries);
+ }
+ }
+
+ /** Checks data region metrics. */
+ private void checkDataRegionMetrics(IgniteEx ignite) throws IgniteCheckedException {
+ DataRegion region = ignite.context().cache().context().database().dataRegion(DFLT_DATA_REG_DEFAULT_NAME);
+
+ MetricRegistry mreg = ignite.context().metric().registry(metricName(DATAREGION_METRICS_PREFIX,
+ DFLT_DATA_REG_DEFAULT_NAME));
+
+ if (!ignite.cluster().state().active()) {
+ assertEquals(0, F.size(mreg.iterator()));
+
+ return;
+ }
+
+ long offHeapSize = mreg.<LongMetric>findMetric("OffHeapSize").value();
+ long initialSize = mreg.<LongMetric>findMetric("InitialSize").value();
+ long maxSize = mreg.<LongMetric>findMetric("MaxSize").value();
+
+ assertTrue(offHeapSize > 0);
+ assertTrue(offHeapSize <= region.config().getMaxSize());
+ assertEquals(region.config().getInitialSize(), initialSize);
+ assertEquals(region.config().getMaxSize(), maxSize);
+ }
+
+ /** Checks cache groups metrics. */
+ private void checkCacheGroupsMetrics(IgniteEx ignite) {
+ MetricRegistry mreg = ignite.context().metric().registry(metricName(CACHE_GROUP_METRICS_PREFIX,
+ DEFAULT_CACHE_NAME));
+
+ if (!ignite.cluster().state().active()) {
+ assertEquals(0, F.size(mreg.iterator()));
+
+ return;
+ }
+
+ int minimumNumberOfPartitionCopies = mreg.<IntMetric>findMetric("MinimumNumberOfPartitionCopies").value();
+ int maximumNumberOfPartitionCopies = mreg.<IntMetric>findMetric("MaximumNumberOfPartitionCopies").value();
+ Map<Integer, List<String>> owningPartitionsAllocationMap = mreg.
+ <ObjectMetric<Map<Integer, List<String>>>>findMetric("OwningPartitionsAllocationMap").value();
+ Map<Integer, List<String>> movingPartitionsAllocationMap = mreg.
+ <ObjectMetric<Map<Integer, List<String>>>>findMetric("MovingPartitionsAllocationMap").value();
+
+ assertEquals(BACKUPS, minimumNumberOfPartitionCopies);
+ assertEquals(BACKUPS, maximumNumberOfPartitionCopies);
+ assertFalse(owningPartitionsAllocationMap.isEmpty());
+ assertFalse(movingPartitionsAllocationMap.isEmpty());
+ }
+
+ /** Checks cache metrics. */
+ private void checkCacheMetrics(IgniteEx ignite, boolean expEntries) {
+ MetricRegistry mreg = ignite.context().metric().registry(cacheMetricsRegistryName(DEFAULT_CACHE_NAME, false));
+
+ if (!ignite.cluster().state().active()) {
+ assertEquals(0, F.size(mreg.iterator()));
+
+ return;
+ }
+
+ long offHeapEntriesCount = mreg.<LongMetric>findMetric("OffHeapEntriesCount").value();
+ long offHeapPrimaryEntriesCount = mreg.<LongMetric>findMetric("OffHeapPrimaryEntriesCount").value();
+ long offHeapBackupEntriesCount = mreg.<LongMetric>findMetric("OffHeapBackupEntriesCount").value();
+
+ if (expEntries) {
+ assertEquals(ENTRY_CNT, offHeapEntriesCount);
+ assertTrue(offHeapPrimaryEntriesCount > 0);
+ assertTrue(offHeapBackupEntriesCount > 0);
+ }
+ else {
+ assertEquals(0, offHeapEntriesCount);
+ assertEquals(0, offHeapPrimaryEntriesCount);
+ assertEquals(0, offHeapBackupEntriesCount);
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteSequenceInternalCleanupTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteSequenceInternalCleanupTest.java
index b21f225..fceceff 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteSequenceInternalCleanupTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/IgniteSequenceInternalCleanupTest.java
@@ -113,11 +113,9 @@ public class IgniteSequenceInternalCleanupTest extends GridCommonAbstractTest {
ignite.cluster().active(true);
- doSleep(500);
-
long putsAfter = ignite.cache("test0").metrics().getCachePuts();
- assertEquals(1, putsAfter);
+ assertEquals(0, putsAfter);
}
finally {
stopAllGrids();
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index abb6a20..62dd926 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@ -56,6 +56,7 @@ import org.apache.ignite.internal.managers.IgniteDiagnosticMessagesMultipleConne
import org.apache.ignite.internal.managers.IgniteDiagnosticMessagesTest;
import org.apache.ignite.internal.managers.communication.GridIoManagerFileTransmissionSelfTest;
import org.apache.ignite.internal.managers.discovery.IncompleteDeserializationExceptionTest;
+import org.apache.ignite.internal.metric.MetricsClusterActivationTest;
import org.apache.ignite.internal.mxbean.IgniteStandardMXBeanTest;
import org.apache.ignite.internal.pagemem.wal.record.WALRecordSerializationTest;
import org.apache.ignite.internal.pagemem.wal.record.WALRecordTest;
@@ -236,6 +237,7 @@ import org.junit.runners.Suite;
IndexStorageSelfTest.class,
CacheFreeListSelfTest.class,
DataRegionMetricsSelfTest.class,
+ MetricsClusterActivationTest.class,
SwapPathConstructionSelfTest.class,
BitSetIntSetTest.class,
ImmutableIntSetTest.class,