use of org.apache.ignite.internal.pagemem.PageMemory in project ignite by apache.
the class IndexPagesMetricsPageDisplacementTest method touchIdxPages.
/**
* Acquires all pages inside the index partition for the given cache group in order to load them back into
* memory if some of them had been displaced to the storage earlier.
*/
private void touchIdxPages(int grpId) throws IgniteCheckedException {
DataRegion dataRegion = grid.context().cache().context().database().dataRegion(null);
PageMemory pageMemory = dataRegion.pageMemory();
for (long pageId : getIdxPagesOnDisk(grpId)) // acquire, but not release all pages, so that they don't get displaced back to the storage
pageMemory.acquirePage(grpId, pageId);
}
use of org.apache.ignite.internal.pagemem.PageMemory in project ignite by apache.
the class InlineIndexColumnTest method testJavaObjectInlineHash.
/**
*/
@Test
public void testJavaObjectInlineHash() throws Exception {
DataRegionConfiguration plcCfg = new DataRegionConfiguration().setInitialSize(1024 * MB).setMaxSize(1024 * MB);
PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(log), null, PAGE_SIZE, plcCfg, new DataRegionMetricsImpl(plcCfg, new GridTestKernalContext(log())), false);
pageMem.start();
long pageId = 0L;
long page = 0L;
try {
pageId = pageMem.allocatePage(CACHE_ID, 1, PageIdAllocator.FLAG_DATA);
page = pageMem.acquirePage(CACHE_ID, pageId);
long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
int off = 0;
IndexKeyTypeSettings keyTypeSettings = new IndexKeyTypeSettings().stringOptimizedCompare(false);
InlineIndexKeyType keyType = InlineIndexKeyTypeRegistry.get(Value.JAVA_OBJECT, keyTypeSettings);
Value exp = wrap(new TestPojo(4, 3L), TestPojo.class);
{
int maxSize = 3;
int savedBytesCnt = keyType.put(pageAddr, off, idxKey(exp), maxSize);
Assert.assertEquals(0, savedBytesCnt);
}
{
int maxSize = 7;
int savedBytesCnt = keyType.put(pageAddr, off, idxKey(exp), maxSize);
Assert.assertEquals(5, savedBytesCnt);
Assert.assertEquals(exp.getObject().hashCode(), keyType.get(pageAddr, off, maxSize).key().hashCode());
Assert.assertEquals(CANT_BE_COMPARE, keyType.compare(pageAddr, off, maxSize, idxKey(exp)));
}
} finally {
if (page != 0L)
pageMem.releasePage(CACHE_ID, pageId, page);
pageMem.stop(true);
}
}
use of org.apache.ignite.internal.pagemem.PageMemory in project ignite by apache.
the class InlineIndexColumnTest method testStringTruncate.
/**
*/
@Test
public void testStringTruncate() throws Exception {
DataRegionConfiguration plcCfg = new DataRegionConfiguration().setInitialSize(1024 * MB).setMaxSize(1024 * MB);
PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(log), null, PAGE_SIZE, plcCfg, new DataRegionMetricsImpl(plcCfg, new GridTestKernalContext(log())), false);
pageMem.start();
long pageId = 0L;
long page = 0L;
try {
pageId = pageMem.allocatePage(CACHE_ID, 1, PageIdAllocator.FLAG_DATA);
page = pageMem.acquirePage(CACHE_ID, pageId);
long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
int off = 0;
IndexKeyTypeSettings keyTypeSettings = new IndexKeyTypeSettings().inlineObjHash(false).stringOptimizedCompare(false);
InlineIndexKeyType keyType = InlineIndexKeyTypeRegistry.get(Value.STRING, keyTypeSettings);
keyType.put(pageAddr, off, idxKey(ValueString.get("aaaaaaa")), 3 + 5);
assertEquals("aaaaa", keyType.get(pageAddr, off, 3 + 5).key());
keyType.put(pageAddr, off, idxKey(ValueString.get("aaa")), 3 + 5);
assertEquals("aaa", keyType.get(pageAddr, off, 3 + 5).key());
keyType.put(pageAddr, off, idxKey(ValueString.get("\u20acaaa")), 3 + 2);
assertNull(keyType.get(pageAddr, off, 3 + 2));
} finally {
if (page != 0L)
pageMem.releasePage(CACHE_ID, pageId, page);
pageMem.stop(true);
}
}
use of org.apache.ignite.internal.pagemem.PageMemory in project ignite by apache.
the class InlineIndexColumnTest method testJavaObjectInlineBytes.
/**
*/
@Test
public void testJavaObjectInlineBytes() throws Exception {
DataRegionConfiguration plcCfg = new DataRegionConfiguration().setInitialSize(1024 * MB).setMaxSize(1024 * MB);
DataRegionMetricsImpl dataRegionMetrics = new DataRegionMetricsImpl(plcCfg, new GridTestKernalContext(log()));
PageMemory pageMem = new PageMemoryNoStoreImpl(log, new UnsafeMemoryProvider(log), null, PAGE_SIZE, plcCfg, dataRegionMetrics, false);
pageMem.start();
long pageId = 0L;
long page = 0L;
try {
pageId = pageMem.allocatePage(CACHE_ID, 1, PageIdAllocator.FLAG_DATA);
page = pageMem.acquirePage(CACHE_ID, pageId);
long pageAddr = pageMem.readLock(CACHE_ID, pageId, page);
int off = 0;
IndexKeyTypeSettings keyTypeSettings = new IndexKeyTypeSettings().inlineObjHash(false).stringOptimizedCompare(false);
InlineIndexKeyType keyType = InlineIndexKeyTypeRegistry.get(Value.JAVA_OBJECT, keyTypeSettings);
ValueJavaObject exp = ValueJavaObject.getNoCopy(new TestPojo(4, 3L), null, null);
int maxSize = 3 + 3;
int savedBytesCnt = keyType.put(pageAddr, off, idxKey(exp), maxSize);
assertTrue(savedBytesCnt > 0);
assertTrue(savedBytesCnt <= maxSize);
maxSize = 3 + exp.getBytesNoCopy().length;
assertTrue(Arrays.equals(Arrays.copyOf(exp.getBytesNoCopy(), 3), ((JavaObjectIndexKey) keyType.get(pageAddr, off, maxSize)).bytesNoCopy()));
savedBytesCnt = keyType.put(pageAddr, off, idxKey(ValueJavaObject.getNoCopy(null, exp.getBytesNoCopy(), null)), maxSize);
assertTrue(savedBytesCnt > 0);
assertTrue(savedBytesCnt <= maxSize);
assertTrue(Arrays.equals(exp.getBytesNoCopy(), ((JavaObjectIndexKey) keyType.get(pageAddr, off, maxSize)).bytesNoCopy()));
} finally {
if (page != 0L)
pageMem.releasePage(CACHE_ID, pageId, page);
pageMem.stop(true);
}
}
Aggregations