You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by al...@apache.org on 2020/07/14 11:31:02 UTC
[ignite] branch master updated: IGNITE-13086 Improve page
replacement mechanism - Fixes #7919.
This is an automated email from the ASF dual-hosted git repository.
alexpl 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 1d550a5 IGNITE-13086 Improve page replacement mechanism - Fixes #7919.
1d550a5 is described below
commit 1d550a5f97db3ec775146f1e6a8c2a8e822225d8
Author: Aleksey Plekhanov <pl...@gmail.com>
AuthorDate: Tue Jul 14 16:12:57 2020 +0500
IGNITE-13086 Improve page replacement mechanism - Fixes #7919.
Signed-off-by: Aleksey Plekhanov <pl...@gmail.com>
---
.../processors/cache/persistence/pagemem/PageMemoryImpl.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
index 2870dcd..5dc17a0 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
@@ -2318,7 +2318,14 @@ public class PageMemoryImpl implements PageMemoryEx {
boolean skip = ignored != null && ignored.contains(rndAddr);
- if (relRmvAddr == rndAddr || pinned || skip) {
+ final boolean dirty = isDirty(absPageAddr);
+
+ CheckpointPages checkpointPages = this.checkpointPages;
+
+ if (relRmvAddr == rndAddr || pinned || skip ||
+ fullId.pageId() == storeMgr.metaPageId(fullId.groupId()) ||
+ (dirty && (checkpointPages == null || !checkpointPages.contains(fullId)))
+ ) {
i--;
continue;
@@ -2326,7 +2333,6 @@ public class PageMemoryImpl implements PageMemoryEx {
final long pageTs = PageHeader.readTimestamp(absPageAddr);
- final boolean dirty = isDirty(absPageAddr);
final boolean storMeta = isStoreMetadataPage(absPageAddr);
if (pageTs < cleanTs && !dirty && !storMeta) {