IGNITE-5150 - Corrected allocated memory pages count. Closes #1915
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/42018e6a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/42018e6a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/42018e6a Branch: refs/heads/ignite-5075 Commit: 42018e6a9d1240c99687d0b39f7ea2b132fa5544 Parents: 661bb53 Author: Ivan Rakov <[email protected]> Authored: Tue May 23 15:05:16 2017 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Tue May 23 15:05:16 2017 +0300 ---------------------------------------------------------------------- .../pagemem/impl/PageMemoryNoStoreImpl.java | 22 +------------- .../pagemem/impl/PageMemoryNoLoadSelfTest.java | 31 +++++++++++++++++++- 2 files changed, 31 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/42018e6a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java index 1d968c5..b8abfed 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java @@ -336,20 +336,7 @@ public class PageMemoryNoStoreImpl implements PageMemory { /** {@inheritDoc} */ @Override public long loadedPages() { - long total = 0; - - for (Segment seg : segments) { - seg.readLock().lock(); - - try { - total += seg.allocatedPages(); - } - finally { - seg.readLock().unlock(); - } - } - - return total; + return allocatedPages.get(); } /** @@ -757,13 +744,6 @@ public class PageMemoryNoStoreImpl implements PageMemory { } /** - * @return Total number of loaded pages for the segment. - */ - private int allocatedPages() { - return allocatedPages.get(); - } - - /** * @return Total number of currently acquired pages. */ private int acquiredPages() { http://git-wip-us.apache.org/repos/asf/ignite/blob/42018e6a/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java index 0a283ed..93b68f3 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java @@ -25,6 +25,7 @@ import java.util.List; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.configuration.MemoryPolicyConfiguration; import org.apache.ignite.internal.mem.DirectMemoryProvider; +import org.apache.ignite.internal.mem.IgniteOutOfMemoryException; import org.apache.ignite.internal.mem.file.MappedFileMemoryProvider; import org.apache.ignite.internal.pagemem.FullPageId; import org.apache.ignite.internal.pagemem.PageIdAllocator; @@ -43,6 +44,9 @@ public class PageMemoryNoLoadSelfTest extends GridCommonAbstractTest { /** */ protected static final int PAGE_SIZE = 8 * 1024; + /** */ + private static final int MAX_MEMORY_SIZE = 10 * 1024 * 1024; + /** {@inheritDoc} */ @Override protected void afterTest() throws Exception { deleteRecursively(U.resolveWorkDirectory(U.defaultWorkDirectory(), "pagemem", false)); @@ -95,6 +99,31 @@ public class PageMemoryNoLoadSelfTest extends GridCommonAbstractTest { /** * @throws Exception If failed. */ + public void testLoadedPagesCount() throws Exception { + PageMemory mem = memory(); + + mem.start(); + + int expPages = MAX_MEMORY_SIZE / mem.systemPageSize(); + + try { + for (int i = 0; i < expPages * 2; i++) + allocatePage(mem); + } + catch (IgniteOutOfMemoryException e) { + e.printStackTrace(); + // Expected. + + assertEquals(mem.loadedPages(), expPages); + } + finally { + mem.stop(); + } + } + + /** + * @throws Exception If failed. + */ public void testPageTearingSequential() throws Exception { PageMemory mem = memory(); @@ -281,7 +310,7 @@ public class PageMemoryNoLoadSelfTest extends GridCommonAbstractTest { File memDir = U.resolveWorkDirectory(U.defaultWorkDirectory(), "pagemem", false); MemoryPolicyConfiguration plcCfg = new MemoryPolicyConfiguration() - .setInitialSize(10 * 1024 * 1024).setMaxSize(10 * 1024 * 1024); + .setMaxSize(MAX_MEMORY_SIZE).setInitialSize(MAX_MEMORY_SIZE); DirectMemoryProvider provider = new MappedFileMemoryProvider(log(), memDir);
