11810
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a481704b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a481704b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a481704b Branch: refs/heads/ignite-gg-11810 Commit: a481704b9cd2235cbdf697e6ea300492a0f6bee5 Parents: 061a059 Author: sboikov <sboi...@gridgain.com> Authored: Thu Dec 29 13:53:40 2016 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Thu Dec 29 13:53:40 2016 +0300 ---------------------------------------------------------------------- .../pagemem/impl/PageMemoryNoStoreImpl.java | 96 +++++--------------- .../internal/pagemem/impl/PageNoStoreImpl.java | 48 +--------- .../cache/IgniteCacheOffheapManagerImpl.java | 29 +----- .../cache/database/CacheDataRowAdapter.java | 72 +++++++++++++++ .../IgniteCacheDatabaseSharedManager.java | 2 +- .../pagemem/impl/PageMemoryNoLoadSelfTest.java | 2 +- .../database/BPlusTreeReuseSelfTest.java | 3 + .../processors/database/BPlusTreeSelfTest.java | 2 +- .../database/FreeListImplSelfTest.java | 2 +- .../database/MetadataStorageSelfTest.java | 2 +- 10 files changed, 113 insertions(+), 145 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/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 409703e..830f781a 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 @@ -20,15 +20,14 @@ package org.apache.ignite.internal.pagemem.impl; import java.io.Closeable; import java.io.IOException; import java.nio.ByteBuffer; -import java.nio.ByteOrder; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantReadWriteLock; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteException; import org.apache.ignite.IgniteLogger; import org.apache.ignite.internal.mem.DirectMemory; -import org.apache.ignite.internal.mem.DirectMemoryRegion; import org.apache.ignite.internal.mem.DirectMemoryProvider; +import org.apache.ignite.internal.mem.DirectMemoryRegion; import org.apache.ignite.internal.mem.OutOfMemoryException; import org.apache.ignite.internal.pagemem.Page; import org.apache.ignite.internal.pagemem.PageIdUtils; @@ -37,7 +36,6 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.util.GridUnsafe; import org.apache.ignite.internal.util.OffheapReadWriteLock; import org.apache.ignite.internal.util.offheap.GridOffHeapOutOfMemoryException; -import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lifecycle.LifecycleAware; import sun.misc.JavaNioAccess; import sun.misc.SharedSecrets; @@ -90,10 +88,7 @@ public class PageMemoryNoStoreImpl implements PageMemory { public static final int PAGE_ID_OFFSET = 8; /** Page pin counter offset. */ - public static final int PIN_CNT_OFFSET = 16; - - /** Page pin counter offset. */ - public static final int LOCK_OFFSET = 24; + public static final int LOCK_OFFSET = 16; /** * Need a 8-byte pointer for linked list, 8 bytes for internal needs (flags), @@ -134,21 +129,28 @@ public class PageMemoryNoStoreImpl implements PageMemory { /** */ private OffheapReadWriteLock rwLock; + /** */ + private final boolean trackAcquiredPages; + /** + * @param log Logger. * @param directMemoryProvider Memory allocator to use. * @param sharedCtx Cache shared context. * @param pageSize Page size. + * @param trackAcquiredPages If {@code true} tracks number of allocated pages (for tests purpose only). */ public PageMemoryNoStoreImpl( IgniteLogger log, DirectMemoryProvider directMemoryProvider, GridCacheSharedContext<?, ?> sharedCtx, - int pageSize + int pageSize, + boolean trackAcquiredPages ) { assert log != null || sharedCtx != null; this.log = sharedCtx != null ? sharedCtx.logger(PageMemoryNoStoreImpl.class) : log; this.directMemoryProvider = directMemoryProvider; + this.trackAcquiredPages = trackAcquiredPages; sysPageSize = pageSize + PAGE_OVERHEAD; @@ -253,9 +255,6 @@ public class PageMemoryNoStoreImpl implements PageMemory { writePageId(absPtr, pageId); - // Clear pin counter. - GridUnsafe.putLong(absPtr + PIN_CNT_OFFSET, 0); - // TODO pass an argument to decide whether the page should be cleaned. GridUnsafe.setMemory(absPtr + PAGE_OVERHEAD, sysPageSize - PAGE_OVERHEAD, (byte)0); @@ -275,23 +274,21 @@ public class PageMemoryNoStoreImpl implements PageMemory { @Override public Page page(int cacheId, long pageId) throws IgniteCheckedException { Segment seg = segment(pageId); - return seg.acquirePage(cacheId, pageId, false); + return seg.acquirePage(cacheId, pageId); } /** {@inheritDoc} */ @Override public Page page(int cacheId, long pageId, boolean restore) throws IgniteCheckedException { - Segment seg = segment(pageId); - - return seg.acquirePage(cacheId, pageId, restore); + throw new UnsupportedOperationException(); } /** {@inheritDoc} */ @Override public void releasePage(Page p) { - PageNoStoreImpl page = (PageNoStoreImpl)p; + if (trackAcquiredPages) { + Segment seg = segment(p.id()); - Segment seg = segments[page.segmentIndex()]; - - seg.releasePage(page); + seg.onPageRelease(); + } } /** {@inheritDoc} */ @@ -440,7 +437,7 @@ public class PageMemoryNoStoreImpl implements PageMemory { * @param absPtr Absolute memory pointer to the page header. * @param pageId Page ID to write. */ - void writePageId(long absPtr, long pageId) { + private void writePageId(long absPtr, long pageId) { GridUnsafe.putLong(absPtr + PAGE_ID_OFFSET, pageId); } @@ -540,52 +537,23 @@ public class PageMemoryNoStoreImpl implements PageMemory { } /** + * @param cacheId Cache ID. * @param pageId Page ID to pin. * @return Pinned page impl. */ @SuppressWarnings("TypeMayBeWeakened") - private PageNoStoreImpl acquirePage(int cacheId, long pageId, boolean restore) { + private PageNoStoreImpl acquirePage(int cacheId, long pageId) { long absPtr = absolute(pageId); - long marker = GridUnsafe.getLong(absPtr); - - if (marker != PAGE_MARKER) - throw new IllegalStateException("Page was not allocated [absPtr=" + U.hexLong(absPtr) + - ", cacheId=" + cacheId + ", pageId=" + U.hexLong(pageId) + - ", marker=" + U.hexLong(marker) + ']'); - - while (true) { - long pinCnt = GridUnsafe.getLong(absPtr + PIN_CNT_OFFSET); - - if (pinCnt < 0) - throw new IllegalStateException("Page has been deallocated [absPtr=" + U.hexLong(absPtr) + - ", cacheId=" + cacheId + ", pageId=" + U.hexLong(pageId) + ", pinCnt=" + pinCnt + ']'); + if (trackAcquiredPages) + acquiredPages.incrementAndGet(); - if (GridUnsafe.compareAndSwapLong(null, absPtr + PIN_CNT_OFFSET, pinCnt, pinCnt + 1)) - break; - } - - acquiredPages.incrementAndGet(); - - return new PageNoStoreImpl(PageMemoryNoStoreImpl.this, idx, absPtr, cacheId, pageId, restore); + return new PageNoStoreImpl(PageMemoryNoStoreImpl.this, absPtr, cacheId, pageId); } /** - * @param pinnedPage Page to unpin. */ - private void releasePage(PageNoStoreImpl pinnedPage) { - long absPtr = pinnedPage.absolutePointer(); - - while (true) { - long pinCnt = GridUnsafe.getLong(absPtr + PIN_CNT_OFFSET); - - assert pinCnt > 0 : "Releasing a page that was not pinned [page=" + pinnedPage + - ", pinCnt=" + pinCnt + ']'; - - if (GridUnsafe.compareAndSwapLong(null, absPtr + PIN_CNT_OFFSET, pinCnt, pinCnt - 1)) - break; - } - + private void onPageRelease() { acquiredPages.decrementAndGet(); } @@ -598,9 +566,9 @@ public class PageMemoryNoStoreImpl implements PageMemory { pageIdx &= idxMask; - long offset = pageIdx * sysPageSize; + long off = pageIdx * sysPageSize; - return pagesBase + offset; + return pagesBase + off; } /** @@ -626,20 +594,6 @@ public class PageMemoryNoStoreImpl implements PageMemory { long absPtr = absolute(relPtr); - // Prepare page to free. - // First, swap pin counter down to -1. - while (true) { - long pinCnt = GridUnsafe.getLong(absPtr + PIN_CNT_OFFSET); - - assert pinCnt >= 0 : "pinCnt=" + pinCnt + ", relPtr=" + U.hexLong(relPtr); - - if (pinCnt > 0) - throw new IllegalStateException("Releasing a page being in use: " + U.hexLong(relPtr)); - - if (GridUnsafe.compareAndSwapLong(null, absPtr + PIN_CNT_OFFSET, 0, -1)) - break; - } - // Second, write clean relative pointer instead of page ID. writePageId(absPtr, relPtr); http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java index 5748acd..5908434 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java @@ -33,9 +33,6 @@ import org.jetbrains.annotations.Nullable; */ public class PageNoStoreImpl implements Page { /** */ - private int segIdx; - - /** */ private long absPtr; /** */ @@ -47,23 +44,17 @@ public class PageNoStoreImpl implements Page { /** */ private PageMemoryNoStoreImpl pageMem; - /** Page for memory restore */ - private final boolean noTagCheck; - /** - * @param segIdx Segment index. * @param absPtr Absolute pointer. */ - public PageNoStoreImpl( - PageMemoryNoStoreImpl pageMem, int segIdx, long absPtr, int cacheId, long pageId, boolean noTagCheck + PageNoStoreImpl( + PageMemoryNoStoreImpl pageMem, long absPtr, int cacheId, long pageId ) { this.pageMem = pageMem; - this.segIdx = segIdx; this.absPtr = absPtr; this.cacheId = cacheId; this.pageId = pageId; - this.noTagCheck = noTagCheck; } /** @@ -103,20 +94,18 @@ public class PageNoStoreImpl implements Page { /** {@inheritDoc} */ @Override public long getForWritePointer() { - int tag = noTagCheck ? OffheapReadWriteLock.TAG_LOCK_ALWAYS : PageIdUtils.tag(pageId); + int tag = PageIdUtils.tag(pageId); boolean locked = pageMem.writeLockPage(absPtr, tag); - if (!locked && !noTagCheck) + if (!locked) return 0L; - assert locked; - return pointer(); } /** {@inheritDoc} */ @Override public long tryGetForWritePointer() { - int tag = noTagCheck ? OffheapReadWriteLock.TAG_LOCK_ALWAYS : PageIdUtils.tag(pageId); + int tag = PageIdUtils.tag(pageId); if (pageMem.tryWriteLockPage(absPtr, tag)) return pointer(); @@ -151,38 +140,11 @@ public class PageNoStoreImpl implements Page { pageMem.releasePage(this); } - /** - * @return Segment index. - */ - int segmentIndex() { - return segIdx; - } - - /** - * @return Absolute pointer to the system page start. - */ - long absolutePointer() { - return absPtr; - } - - /** - * @param buf Byte buffer. - * @return The given buffer back. - */ - private ByteBuffer reset(ByteBuffer buf) { - buf.order(PageMemory.NATIVE_BYTE_ORDER); - - buf.rewind(); - - return buf; - } - /** {@inheritDoc} */ @Override public String toString() { SB sb = new SB("PageNoStoreImpl [absPtr=0x"); sb.appendHex(absPtr); - sb.a(", segIdx=").a(segIdx); sb.a(", cacheId=").a(cacheId); sb.a(", pageId=0x").appendHex(pageId); sb.a("]"); http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java index 4b1d464..5fc612c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java @@ -83,7 +83,7 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple protected final ConcurrentMap<Integer, CacheDataStore> partDataStores = new ConcurrentHashMap<>(); /** */ - protected final CacheDataStore removedStore = new CacheDataStoreImpl(-1, null, null, null); + protected final CacheDataStore rmvStore = new CacheDataStoreImpl(-1, null, null, null); /** */ protected PendingEntriesTree pendingEntries; @@ -1095,9 +1095,9 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple if (cmp != 0) return cmp; - KeySearchRow row0 = io.getLookupRow(this, buf, idx); + long link = ((RowLinkIO)io).getLink(buf, idx); - return compareKeys(row0.key(), row.key()); + return row.compareKey(cctx, link); } /** {@inheritDoc} */ @@ -1108,29 +1108,6 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple return rowStore.dataRow(hash, link); } - - /** - * @param key1 First key. - * @param key2 Second key. - * @return Compare result. - * @throws IgniteCheckedException If failed. - */ - private int compareKeys(CacheObject key1, CacheObject key2) throws IgniteCheckedException { - byte[] bytes1 = key1.valueBytes(cctx.cacheObjectContext()); - byte[] bytes2 = key2.valueBytes(cctx.cacheObjectContext()); - - int len = Math.min(bytes1.length, bytes2.length); - - for (int i = 0; i < len; i++) { - byte b1 = bytes1[i]; - byte b2 = bytes2[i]; - - if (b1 != b2) - return b1 > b2 ? 1 : -1; - } - - return Integer.compare(bytes1.length, bytes2.length); - } } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java index d940d62..f559fd4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java @@ -73,6 +73,78 @@ public class CacheDataRowAdapter implements CacheDataRow { } /** + * Compare key with key of record, given by link. + * + * @param cctx Context. + * @param link Link to second record. + * @return compare result. + * @throws IgniteCheckedException if fails. + */ + public int compareKey(GridCacheContext cctx, long link) throws IgniteCheckedException { + byte[] bytes = key().valueBytes(cctx.cacheObjectContext()); + + PageMemory pageMem = cctx.shared().database().pageMemory(); + + try (Page page = page(pageId(link), cctx)) { + long pageAddr = page.getForReadPointer(); // Non-empty data page must not be recycled. + + assert pageAddr != 0L : link; + + try { + DataPageIO io = DataPageIO.VERSIONS.forPage(pageAddr); + + DataPagePayload data = io.readPayload(pageAddr, + itemId(link), + pageMem.pageSize()); + + link = data.nextLink(); + + if (link == 0) { + long addr = pageAddr + data.offset(); + + int len = PageUtils.getInt(addr, 0); + + int size = Math.min(bytes.length, len); + + addr += 5; // Skip length and type byte. + + for (int i = 0; i < size; i++) { + byte b1 = PageUtils.getByte(addr, i); + byte b2 = bytes[i]; + + if (b1 != b2) + return b1 > b2 ? 1 : -1; + } + + return Integer.compare(len, bytes.length); + } + } + finally { + page.releaseRead(); + } + } + + // TODO GG-11768. + CacheDataRowAdapter other = new CacheDataRowAdapter(link); + other.initFromLink(cctx, true); + + byte[] bytes1 = other.key().valueBytes(cctx.cacheObjectContext()); + byte[] bytes2 = key.valueBytes(cctx.cacheObjectContext()); + + int len = Math.min(bytes1.length, bytes2.length); + + for (int i = 0; i < len; i++) { + byte b1 = bytes1[i]; + byte b2 = bytes2[i]; + + if (b1 != b2) + return b1 > b2 ? 1 : -1; + } + + return Integer.compare(bytes1.length, bytes2.length); + } + + /** * Read row from data pages. * * @param cctx Cache context. http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java index 91f1f63..98e2d68 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java @@ -216,7 +216,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap true, sizes); - return new PageMemoryNoStoreImpl(log, memProvider, cctx, dbCfg.getPageSize()); + return new PageMemoryNoStoreImpl(log, memProvider, cctx, dbCfg.getPageSize(), false); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/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 483b228..f03c5b4 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 @@ -273,7 +273,7 @@ public class PageMemoryNoLoadSelfTest extends GridCommonAbstractTest { DirectMemoryProvider provider = new MappedFileMemoryProvider(log(), memDir, true, sizes); - return new PageMemoryNoStoreImpl(log(), provider, null, PAGE_SIZE); + return new PageMemoryNoStoreImpl(log(), provider, null, PAGE_SIZE, true); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeReuseSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeReuseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeReuseSelfTest.java index 4996eef..e1d0da6 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeReuseSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeReuseSelfTest.java @@ -46,6 +46,9 @@ public class BPlusTreeReuseSelfTest extends BPlusTreeSelfTest { assertTrue(TestReuseList.checkNoLocks()); } + /** + * + */ private static class TestReuseList extends ReuseListImpl { /** */ private static ThreadLocal<Set<Long>> readLocks = new ThreadLocal<Set<Long>>() { http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java index b524b45..0358f5a 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java @@ -1408,7 +1408,7 @@ public class BPlusTreeSelfTest extends GridCommonAbstractTest { for (int i = 0; i < sizes.length; i++) sizes[i] = 1024 * MB / CPUS; - PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(sizes), null, PAGE_SIZE); + PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(sizes), null, PAGE_SIZE, true); pageMem.start(); http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java index ad5e78f..66987e2 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/FreeListImplSelfTest.java @@ -316,7 +316,7 @@ public class FreeListImplSelfTest extends GridCommonAbstractTest { for (int i = 0; i < sizes.length; i++) sizes[i] = 1024 * MB / CPUS; - PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(sizes), null, pageSize); + PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(sizes), null, pageSize, true); pageMem.start(); http://git-wip-us.apache.org/repos/asf/ignite/blob/a481704b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MetadataStorageSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MetadataStorageSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MetadataStorageSelfTest.java index 252ea82..7eeda4b 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MetadataStorageSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MetadataStorageSelfTest.java @@ -160,6 +160,6 @@ public class MetadataStorageSelfTest extends GridCommonAbstractTest { DirectMemoryProvider provider = new MappedFileMemoryProvider(log(), allocationPath, clean, sizes); - return new PageMemoryNoStoreImpl(log, provider, null, PAGE_SIZE); + return new PageMemoryNoStoreImpl(log, provider, null, PAGE_SIZE, true); } }