Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 303B4200D0C for ; Thu, 17 Aug 2017 18:51:52 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 2F1B7169724; Thu, 17 Aug 2017 16:51:52 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 2178816973B for ; Thu, 17 Aug 2017 18:51:50 +0200 (CEST) Received: (qmail 33751 invoked by uid 500); 17 Aug 2017 16:51:50 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 33459 invoked by uid 99); 17 Aug 2017 16:51:49 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Aug 2017 16:51:49 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 74362F5ED6; Thu, 17 Aug 2017 16:51:48 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: agoncharuk@apache.org To: commits@ignite.apache.org Date: Thu, 17 Aug 2017 16:51:58 -0000 Message-Id: <31ed7cc179f14a61a9d15eb0f5125121@git.apache.org> In-Reply-To: <7505250738af467994d8aad520750fc2@git.apache.org> References: <7505250738af467994d8aad520750fc2@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [11/19] ignite git commit: IGNITE-6100 Fixed memory leak, IgnitePdsRecoveryAfterFileCorruptionTest.testPageRecoveryAfterFileCorruption - Fixes #2466. archived-at: Thu, 17 Aug 2017 16:51:52 -0000 IGNITE-6100 Fixed memory leak, IgnitePdsRecoveryAfterFileCorruptionTest.testPageRecoveryAfterFileCorruption - Fixes #2466. Signed-off-by: Alexey Goncharuk 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 Authored: Thu Aug 17 17:07:29 2017 +0300 Committer: Alexey Goncharuk 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 tuple : walMgr.replay(null)) { - switch (tuple.getValue().type()) { - case PAGE_RECORD: - PageSnapshot snapshot = (PageSnapshot)tuple.getValue(); + try (WALIterator it = walMgr.replay(null)) { + for (IgniteBiTuple 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); + } } - } + } } }