You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/08/17 16:51:58 UTC

[11/19] ignite git commit: IGNITE-6100 Fixed memory leak, IgnitePdsRecoveryAfterFileCorruptionTest.testPageRecoveryAfterFileCorruption - Fixes #2466.

IGNITE-6100 Fixed memory leak, IgnitePdsRecoveryAfterFileCorruptionTest.testPageRecoveryAfterFileCorruption - Fixes #2466.

Signed-off-by: Alexey Goncharuk <al...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/06ad010e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/06ad010e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/06ad010e

Branch: refs/heads/ignite-5901
Commit: 06ad010e92541e4e0f0cdcfe6c99ea8d4af69b70
Parents: 071c24c
Author: Dmitriy Govorukhin <dm...@gmail.com>
Authored: Thu Aug 17 17:07:29 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Aug 17 17:07:29 2017 +0300

----------------------------------------------------------------------
 .../persistence/pagemem/PageMemoryImpl.java     | 71 ++++++++++----------
 1 file changed, 37 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/06ad010e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PageMemoryImpl.java
----------------------------------------------------------------------
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 1b4cf81..b6e5f46 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
@@ -47,6 +47,7 @@ import org.apache.ignite.internal.pagemem.PageIdUtils;
 import org.apache.ignite.internal.pagemem.PageUtils;
 import org.apache.ignite.internal.pagemem.store.IgnitePageStoreManager;
 import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
+import org.apache.ignite.internal.pagemem.wal.WALIterator;
 import org.apache.ignite.internal.pagemem.wal.WALPointer;
 import org.apache.ignite.internal.pagemem.wal.record.CheckpointRecord;
 import org.apache.ignite.internal.pagemem.wal.record.PageSnapshot;
@@ -670,55 +671,57 @@ public class PageMemoryImpl implements PageMemoryEx {
             ByteBuffer curPage = null;
             ByteBuffer lastValidPage = null;
 
-            for (IgniteBiTuple<WALPointer, WALRecord> tuple : walMgr.replay(null)) {
-                switch (tuple.getValue().type()) {
-                    case PAGE_RECORD:
-                        PageSnapshot snapshot = (PageSnapshot)tuple.getValue();
+            try (WALIterator it = walMgr.replay(null)) {
+                for (IgniteBiTuple<WALPointer, WALRecord> tuple : it) {
+                    switch (tuple.getValue().type()) {
+                        case PAGE_RECORD:
+                            PageSnapshot snapshot = (PageSnapshot)tuple.getValue();
 
-                        if (snapshot.fullPageId().equals(fullId)) {
-                            if (tmpAddr == null) {
-                                assert snapshot.pageData().length <= pageSize() : snapshot.pageData().length;
+                            if (snapshot.fullPageId().equals(fullId)) {
+                                if (tmpAddr == null) {
+                                    assert snapshot.pageData().length <= pageSize() : snapshot.pageData().length;
 
-                                tmpAddr = GridUnsafe.allocateMemory(pageSize());
-                            }
+                                    tmpAddr = GridUnsafe.allocateMemory(pageSize());
+                                }
 
-                            if (curPage == null)
-                                curPage = wrapPointer(tmpAddr, pageSize());
+                                if (curPage == null)
+                                    curPage = wrapPointer(tmpAddr, pageSize());
 
-                            PageUtils.putBytes(tmpAddr, 0, snapshot.pageData());
-                        }
+                                PageUtils.putBytes(tmpAddr, 0, snapshot.pageData());
+                            }
 
-                        break;
+                            break;
 
-                    case CHECKPOINT_RECORD:
-                        CheckpointRecord rec = (CheckpointRecord)tuple.getValue();
+                        case CHECKPOINT_RECORD:
+                            CheckpointRecord rec = (CheckpointRecord)tuple.getValue();
 
-                        assert !rec.end();
+                            assert !rec.end();
 
-                        if (curPage != null) {
-                            lastValidPage = curPage;
-                            curPage = null;
-                        }
+                            if (curPage != null) {
+                                lastValidPage = curPage;
+                                curPage = null;
+                            }
 
-                        break;
+                            break;
 
-                    case MEMORY_RECOVERY: // It means that previous checkpoint was broken.
-                        curPage = null;
+                        case MEMORY_RECOVERY: // It means that previous checkpoint was broken.
+                            curPage = null;
 
-                        break;
+                            break;
 
-                    default:
-                        if (tuple.getValue() instanceof PageDeltaRecord) {
-                            PageDeltaRecord deltaRecord = (PageDeltaRecord)tuple.getValue();
+                        default:
+                            if (tuple.getValue() instanceof PageDeltaRecord) {
+                                PageDeltaRecord deltaRecord = (PageDeltaRecord)tuple.getValue();
 
-                            if (curPage != null
-                                && deltaRecord.pageId() == fullId.pageId()
-                                && deltaRecord.groupId() == fullId.groupId()) {
-                                assert tmpAddr != null;
+                                if (curPage != null
+                                    && deltaRecord.pageId() == fullId.pageId()
+                                    && deltaRecord.groupId() == fullId.groupId()) {
+                                    assert tmpAddr != null;
 
-                                deltaRecord.applyDelta(this, tmpAddr);
+                                    deltaRecord.applyDelta(this, tmpAddr);
+                                }
                             }
-                        }
+                    }
                 }
             }