You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2018/12/10 07:24:57 UTC
[27/37] ignite git commit: IGNITE-9455 Total allocated size memory
metric is always zero for metastore data region - Fixes #5195.
IGNITE-9455 Total allocated size memory metric is always zero for metastore data region - Fixes #5195.
Signed-off-by: Aleksey Plekhanov <Pl...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/137a0e7b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/137a0e7b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/137a0e7b
Branch: refs/heads/ignite-10189
Commit: 137a0e7b302a2fa6f4c8bb4d81916e45ffa7ff09
Parents: 472889d
Author: pereslegin-pa <xx...@gmail.com>
Authored: Fri Dec 7 14:32:44 2018 +0300
Committer: Aleksey Plekhanov <Pl...@gmail.com>
Committed: Fri Dec 7 14:32:44 2018 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/IgniteKernal.java | 8 +---
.../cache/CacheGroupMetricsMXBeanImpl.java | 7 +++
.../persistence/DataRegionMetricsImpl.java | 19 ++++++++
.../persistence/file/FilePageStoreManager.java | 6 ++-
.../persistence/metastorage/MetaStorage.java | 2 +
.../internal/GridNodeMetricsLogPdsSelfTest.java | 9 +---
.../db/IgnitePdsDataRegionMetricsTest.java | 50 +++++++++++++-------
7 files changed, 68 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index f777980..15f3c6a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -130,7 +130,6 @@ import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProce
import org.apache.ignite.internal.processors.cache.mvcc.MvccProcessorImpl;
import org.apache.ignite.internal.processors.cache.persistence.DataRegion;
import org.apache.ignite.internal.processors.cache.persistence.DataStorageMXBeanImpl;
-import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.cache.persistence.filename.PdsConsistentIdProcessor;
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.processors.closure.GridClosureProcessor;
@@ -2109,12 +2108,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
pdsUsedSummary += pdsUsed;
- // TODO https://issues.apache.org/jira/browse/IGNITE-9455
- // TODO Print actual value for meta store region when issue will be fixed.
- boolean metastore =
- GridCacheDatabaseSharedManager.METASTORE_DATA_REGION_NAME.equals(region.config().getName());
-
- String pdsUsedSize = metastore ? "unknown" : dblFmt.format(pdsUsedMBytes) + "MB";
+ String pdsUsedSize = dblFmt.format(pdsUsedMBytes) + "MB";
pdsRegionsInfo.append(" ^-- ")
.append(region.config().getName()).append(" region")
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
index 59894e3..85689f7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
@@ -85,6 +85,13 @@ public class CacheGroupMetricsMXBeanImpl implements CacheGroupMetricsMXBean {
delegate.updateTotalAllocatedPages(delta);
}
+
+ /**
+ * Resets count of allocated pages to zero.
+ */
+ public void reset() {
+ totalAllocatedPages.reset();
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
----------------------------------------------------------------------
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 0a83c36..29cfc71 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
@@ -480,4 +480,23 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
pageReplaceRate = new HitRateMetrics((int)rateTimeInterval, subInts);
pageReplaceAge = new HitRateMetrics((int)rateTimeInterval, subInts);
}
+
+ /**
+ * Clear metrics.
+ */
+ public void clear() {
+ totalAllocatedPages.reset();
+ grpAllocationTrackers.values().forEach(GroupAllocationTracker::reset);
+ largeEntriesPages.reset();
+ dirtyPages.reset();
+ readPages.reset();
+ writtenPages.reset();
+ replacedPages.reset();
+ offHeapSize.set(0);
+ checkpointBufferSize.set(0);
+ allocRate.clear();
+ evictRate.clear();
+ pageReplaceRate.clear();
+ pageReplaceAge.clear();
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
index 3544485..e80107f 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
@@ -61,7 +61,9 @@ import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
import org.apache.ignite.internal.processors.cache.persistence.AllocatedPageTracker;
+import org.apache.ignite.internal.processors.cache.persistence.DataRegion;
import org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl;
+import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.cache.persistence.StorageException;
import org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderSettings;
import org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage;
@@ -368,11 +370,13 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
int grpId = MetaStorage.METASTORAGE_CACHE_ID;
if (!idxCacheStores.containsKey(grpId)) {
+ DataRegion dataRegion = cctx.database().dataRegion(GridCacheDatabaseSharedManager.METASTORE_DATA_REGION_NAME);
+
CacheStoreHolder holder = initDir(
new File(storeWorkDir, META_STORAGE_NAME),
grpId,
1,
- AllocatedPageTracker.NO_OP,
+ dataRegion.memoryMetrics(),
false);
CacheStoreHolder old = idxCacheStores.put(grpId, holder);
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
index 91fbec0..a61bf64 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/metastorage/MetaStorage.java
@@ -139,6 +139,8 @@ public class MetaStorage implements DbCheckpointListener, ReadOnlyMetastorage, R
/** */
public void init(IgniteCacheDatabaseSharedManager db) throws IgniteCheckedException {
+ regionMetrics.clear();
+
getOrAllocateMetas();
if (!empty) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogPdsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogPdsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogPdsSelfTest.java
index a768a11..41c3588 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogPdsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogPdsSelfTest.java
@@ -32,9 +32,6 @@ import org.apache.ignite.internal.util.typedef.F;
* Check logging local node metrics with PDS enabled.
*/
public class GridNodeMetricsLogPdsSelfTest extends GridNodeMetricsLogSelfTest {
- /** */
- private static final String UNKNOWN_SIZE = "unknown";
-
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
@@ -85,7 +82,7 @@ public class GridNodeMetricsLogPdsSelfTest extends GridNodeMetricsLogSelfTest {
Set<String> regions = new HashSet<>();
Pattern ptrn = Pattern.compile("(?m).{2,}( {3}(?<name>.+) region|Ignite persistence) " +
- "\\[used=(?<used>[-.\\d]+|" + UNKNOWN_SIZE + ")?.*]");
+ "\\[used=(?<used>[-.\\d]+)?.*]");
Matcher matcher = ptrn.matcher(logOutput);
@@ -96,9 +93,7 @@ public class GridNodeMetricsLogPdsSelfTest extends GridNodeMetricsLogSelfTest {
String usedSize = matcher.group("used");
- // TODO https://issues.apache.org/jira/browse/IGNITE-9455
- // TODO The actual value of the metric should be printed when this issue is solved.
- int used = UNKNOWN_SIZE.equals(usedSize) ? 0 : Integer.parseInt(usedSize);
+ int used = Integer.parseInt(usedSize);
assertTrue(used + " should be non negative: " + subj, used >= 0);
http://git-wip-us.apache.org/repos/asf/ignite/blob/137a0e7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
index 0154c14..0326c84 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
@@ -36,6 +36,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.pagemem.PageIdAllocator;
+import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore;
@@ -51,6 +52,10 @@ import org.junit.Assert;
import static java.nio.file.Files.newDirectoryStream;
import static org.apache.ignite.configuration.DataStorageConfiguration.DFLT_DATA_REG_DEFAULT_NAME;
+import static org.apache.ignite.internal.processors.cache.GridCacheUtils.UTILITY_CACHE_NAME;
+import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.META_STORAGE_NAME;
+import static org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage.METASTORAGE_CACHE_ID;
+import static org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage.METASTORAGE_CACHE_NAME;
/**
*
@@ -150,7 +155,7 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
forceCheckpoint();
- checkMetricsConsistency(node, DEFAULT_CACHE_NAME);
+ checkMetricsConsistency(node);
}
currMetrics = getDfltRegionMetrics(node);
@@ -183,8 +188,8 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
forceCheckpoint();
- checkMetricsConsistency(node0, DEFAULT_CACHE_NAME);
- checkMetricsConsistency(node1, DEFAULT_CACHE_NAME);
+ checkMetricsConsistency(node0);
+ checkMetricsConsistency(node1);
IgniteEx node2 = startGrid(2);
@@ -194,9 +199,9 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
forceCheckpoint();
- checkMetricsConsistency(node0, DEFAULT_CACHE_NAME);
- checkMetricsConsistency(node1, DEFAULT_CACHE_NAME);
- checkMetricsConsistency(node2, DEFAULT_CACHE_NAME);
+ checkMetricsConsistency(node0);
+ checkMetricsConsistency(node1);
+ checkMetricsConsistency(node2);
stopGrid(1, true);
@@ -206,8 +211,8 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
forceCheckpoint();
- checkMetricsConsistency(node0, DEFAULT_CACHE_NAME);
- checkMetricsConsistency(node2, DEFAULT_CACHE_NAME);
+ checkMetricsConsistency(node0);
+ checkMetricsConsistency(node2);
}
/**
@@ -293,14 +298,22 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
}
/** */
+ private void checkMetricsConsistency(final IgniteEx node) throws Exception {
+ checkMetricsConsistency(node, DEFAULT_CACHE_NAME);
+ checkMetricsConsistency(node, UTILITY_CACHE_NAME);
+ checkMetricsConsistency(node, METASTORAGE_CACHE_NAME);
+ }
+
+ /** */
private void checkMetricsConsistency(final IgniteEx node, String cacheName) throws Exception {
FilePageStoreManager pageStoreMgr = (FilePageStoreManager)node.context().cache().context().pageStore();
assert pageStoreMgr != null : "Persistence is not enabled";
- File cacheWorkDir = pageStoreMgr.cacheWorkDir(
- node.getOrCreateCache(cacheName).getConfiguration(CacheConfiguration.class)
- );
+ boolean metaStore = METASTORAGE_CACHE_NAME.equals(cacheName);
+
+ File cacheWorkDir = metaStore ? new File(pageStoreMgr.workDir(), META_STORAGE_NAME) :
+ pageStoreMgr.cacheWorkDir(node.cachex(cacheName).configuration());
long totalPersistenceSize = 0;
@@ -310,7 +323,8 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
for (Path path : files) {
File file = path.toFile();
- FilePageStore store = (FilePageStore)pageStoreMgr.getStore(CU.cacheId(cacheName), partId(file));
+ FilePageStore store = (FilePageStore)pageStoreMgr.getStore(metaStore ?
+ METASTORAGE_CACHE_ID : CU.cacheId(cacheName), partId(file));
int pageSize = store.getPageSize();
long storeSize = path.toFile().length() - store.headerSize();
@@ -322,12 +336,12 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
}
}
- long totalAllocatedPagesFromMetrics = node.context().cache().context()
- .cacheContext(CU.cacheId(DEFAULT_CACHE_NAME))
- .group()
- .dataRegion()
- .memoryMetrics()
- .getTotalAllocatedPages();
+ GridCacheSharedContext cctx = node.context().cache().context();
+
+ String regionName = metaStore ? GridCacheDatabaseSharedManager.METASTORE_DATA_REGION_NAME :
+ cctx.cacheContext(CU.cacheId(cacheName)).group().dataRegion().config().getName();
+
+ long totalAllocatedPagesFromMetrics = cctx.database().memoryMetrics(regionName).getTotalAllocatedPages();
assertEquals("Number of allocated pages is different than in metrics for [node=" + node.name() + ", cache=" + cacheName + "]",
totalPersistenceSize / pageStoreMgr.pageSize(), totalAllocatedPagesFromMetrics);