You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2020/12/04 07:03:47 UTC
[ignite] branch master updated: IGNITE-13802 Added missing
"setCandidatePageCount" in "GridCacheOffheapManager.addPartitions" - Fixes
#8527.
This is an automated email from the ASF dual-hosted git repository.
sergeychugunov 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 b5562df IGNITE-13802 Added missing "setCandidatePageCount" in "GridCacheOffheapManager.addPartitions" - Fixes #8527.
b5562df is described below
commit b5562df259e1547e4724c92054ceeb7f8b7d72d7
Author: ibessonov <be...@gmail.com>
AuthorDate: Fri Dec 4 09:52:37 2020 +0300
IGNITE-13802 Added missing "setCandidatePageCount" in "GridCacheOffheapManager.addPartitions" - Fixes #8527.
Signed-off-by: Sergey Chugunov <se...@gmail.com>
---
.../cache/persistence/GridCacheOffheapManager.java | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
index f28433e..8fc369e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
@@ -890,9 +890,23 @@ public class GridCacheOffheapManager extends IgniteCacheOffheapManagerImpl imple
try {
long metaPageAddr = pageMem.writeLock(grpId, metaPageId, metaPage);
+ if (metaPageAddr == 0L) {
+ U.warn(log, "Failed to acquire write lock for index meta page [grpId=" + grpId +
+ ", metaPageId=" + metaPageId + ']');
+
+ return;
+ }
+
+ boolean changed = false;
+
try {
PageMetaIO metaIo = PageMetaIO.getPageIO(metaPageAddr);
+ int pageCnt = this.ctx.pageStore().pages(grpId, PageIdAllocator.INDEX_PARTITION);
+
+ changed = metaIo.setCandidatePageCount(metaPageAddr, pageCnt);
+
+ // Following method doesn't modify page data, it only reads last allocated page count from it.
addPartition(
null,
ctx.partitionStatMap(),
@@ -900,11 +914,11 @@ public class GridCacheOffheapManager extends IgniteCacheOffheapManagerImpl imple
metaIo,
grpId,
PageIdAllocator.INDEX_PARTITION,
- this.ctx.pageStore().pages(grpId, PageIdAllocator.INDEX_PARTITION),
+ pageCnt,
-1);
}
finally {
- pageMem.writeUnlock(grpId, metaPageId, metaPage, null, true);
+ pageMem.writeUnlock(grpId, metaPageId, metaPage, null, changed);
}
}
finally {