Class DataStructure
- java.lang.Object
-
- org.apache.ignite.internal.processors.cache.persistence.DataStructure
-
public abstract class DataStructure extends Object
Base class for all the data structures based onPageMemory.
-
-
Field Summary
Fields Modifier and Type Field Description protected intgrpIdprotected StringgrpNameprotected PageMetricsmetricsprotected bytepageFlagprotected PageIoResolverpageIoRslvrprotected PageMemorypageMemprotected ReuseListreuseListstatic RandomrndFor tests.protected @Nullable IgniteWriteAheadLogManagerwal
-
Constructor Summary
Constructors Constructor Description DataStructure(String name, int cacheGrpId, @Nullable String grpName, PageMemory pageMem, @Nullable IgniteWriteAheadLogManager wal, PageLockTrackerManager pageLockTrackerManager, PageIoResolver pageIoRslvr, byte pageFlag)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected longacquirePage(long pageId, IoStatisticsHolder statHolder)protected longallocatePage(ReuseBag bag)Shorthand forallocatePage(bag, true).protected longallocatePage(ReuseBag bag, boolean useRecycled)protected longallocatePageNoReuse()voidclose()Frees the resources allocated by this structure.intgroupId()protected voidinit(long pageId, PageIO init)Stringname()protected booleanneedWalDeltaRecord(long pageId, long page, Boolean walPlc)protected intpageSize()static intrandomInt(int max)protected <X,R>
Rread(long pageId, long page, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder)protected <X,R>
Rread(long pageId, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder)protected longreadLock(long pageId, long page)protected voidreadUnlock(long pageId, long page, long pageAddr)protected longrecyclePage(long pageId, long page, long pageAddr, Boolean walPlc)protected voidreleasePage(long pageId, long page)protected longtryWriteLock(long pageId, long page)protected <X,R>
Rwrite(long pageId, long page, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder)protected <R> Rwrite(long pageId, PageHandler<?,R> h, int intArg, R lockFailed, IoStatisticsHolder statHolder)protected <X,R>
Rwrite(long pageId, PageHandler<X,R> h, PageIO init, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder)protected <X,R>
Rwrite(long pageId, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder)protected longwriteLock(long pageId, long page)protected voidwriteUnlock(long pageId, long page, long pageAddr, boolean dirty)Note: Default WAL record policy will be used.protected voidwriteUnlock(long pageId, long page, long pageAddr, Boolean walPlc, boolean dirty)
-
-
-
Field Detail
-
rnd
public static Random rnd
For tests.
-
grpId
protected final int grpId
-
grpName
protected final String grpName
-
pageMem
protected final PageMemory pageMem
-
wal
@Nullable protected final @Nullable IgniteWriteAheadLogManager wal
-
reuseList
protected ReuseList reuseList
-
pageIoRslvr
protected final PageIoResolver pageIoRslvr
-
pageFlag
protected final byte pageFlag
-
metrics
protected final PageMetrics metrics
-
-
Constructor Detail
-
DataStructure
public DataStructure(String name, int cacheGrpId, @Nullable @Nullable String grpName, PageMemory pageMem, @Nullable @Nullable IgniteWriteAheadLogManager wal, PageLockTrackerManager pageLockTrackerManager, PageIoResolver pageIoRslvr, byte pageFlag)
- Parameters:
name- Structure name (for debugging purposes).cacheGrpId- Cache group id.grpName- Group name.pageMem- Page memory.wal- Write ahead log manager.pageLockTrackerManager- Page lock tracker manager.pageIoRslvr- Page IO resolver.pageFlag- Default flag value for allocated pages.
-
-
Method Detail
-
name
public final String name()
- Returns:
- Tree name.
-
groupId
public final int groupId()
- Returns:
- Cache group ID.
-
randomInt
public static int randomInt(int max)
- Parameters:
max- Max.- Returns:
- Random value from
0(inclusive) to the given max value (exclusive).
-
allocatePage
protected final long allocatePage(ReuseBag bag) throws IgniteCheckedException
Shorthand forallocatePage(bag, true).- Parameters:
bag- Reuse bag.- Returns:
- Allocated page.
- Throws:
IgniteCheckedException- If failed.
-
allocatePage
protected final long allocatePage(ReuseBag bag, boolean useRecycled) throws IgniteCheckedException
- Parameters:
bag- Reuse Bag.useRecycled- Use recycled page.- Returns:
- Allocated page.
- Throws:
IgniteCheckedException- If failed.
-
allocatePageNoReuse
protected long allocatePageNoReuse() throws IgniteCheckedException- Returns:
- Page ID of newly allocated page.
- Throws:
IgniteCheckedException- If failed.
-
acquirePage
protected final long acquirePage(long pageId, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.statHolder- Statistics holder to track IO operations.- Returns:
- Page absolute pointer.
- Throws:
IgniteCheckedException- If failed.
-
releasePage
protected final void releasePage(long pageId, long page)- Parameters:
pageId- Page ID.page- Page pointer.
-
tryWriteLock
protected final long tryWriteLock(long pageId, long page)- Parameters:
pageId- Page IDpage- Page pointer.- Returns:
- Page address or
0if failed to lock due to recycling.
-
writeLock
protected final long writeLock(long pageId, long page)- Parameters:
pageId- Page IDpage- Page pointer.- Returns:
- Page address.
-
writeUnlock
protected final void writeUnlock(long pageId, long page, long pageAddr, boolean dirty)Note: Default WAL record policy will be used.
- Parameters:
pageId- Page IDpage- Page pointer.pageAddr- Page address.dirty- Dirty flag.
-
readLock
protected final long readLock(long pageId, long page)- Parameters:
pageId- Page IDpage- Page pointer.- Returns:
- Page address.
-
readUnlock
protected final void readUnlock(long pageId, long page, long pageAddr)- Parameters:
pageId- Page IDpage- Page pointer.pageAddr- Page address.
-
writeUnlock
protected final void writeUnlock(long pageId, long page, long pageAddr, Boolean walPlc, boolean dirty)- Parameters:
pageId- Page IDpage- Page pointer.pageAddr- Page address.walPlc- Full page WAL record policy.dirty- Dirty flag.
-
needWalDeltaRecord
protected final boolean needWalDeltaRecord(long pageId, long page, Boolean walPlc)- Parameters:
pageId- Page ID.page- Page pointer.walPlc- Full page WAL record policy.- Returns:
trueIf we need to make a delta WAL record for the change in this page.
-
write
protected final <R> R write(long pageId, PageHandler<?,R> h, int intArg, R lockFailed, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.h- Handler.intArg- Argument of typeint.lockFailed- Result in case of lock failure due to page recycling.statHolder- Statistics holder to track IO operations.- Returns:
- Handler result.
- Throws:
IgniteCheckedException- If failed.
-
write
protected final <X,R> R write(long pageId, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.h- Handler.arg- Argument.intArg- Argument of typeint.lockFailed- Result in case of lock failure due to page recycling.statHolder- Statistics holder to track IO operations.- Returns:
- Handler result.
- Throws:
IgniteCheckedException- If failed.
-
write
protected final <X,R> R write(long pageId, long page, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.page- Page pointer.h- Handler.arg- Argument.intArg- Argument of typeint.lockFailed- Result in case of lock failure due to page recycling.statHolder- Statistics holder to track IO operations.- Returns:
- Handler result.
- Throws:
IgniteCheckedException- If failed.
-
write
protected final <X,R> R write(long pageId, PageHandler<X,R> h, PageIO init, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.h- Handler.init- IO for new page initialization ornullif it is an existing page.arg- Argument.intArg- Argument of typeint.lockFailed- Result in case of lock failure due to page recycling.statHolder- Statistics holder to track IO operations.- Returns:
- Handler result.
- Throws:
IgniteCheckedException- If failed.
-
read
protected final <X,R> R read(long pageId, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.h- Handler.arg- Argument.intArg- Argument of typeint.lockFailed- Result in case of lock failure due to page recycling.statHolder- Statistics holder to track IO operations.- Returns:
- Handler result.
- Throws:
IgniteCheckedException- If failed.
-
read
protected final <X,R> R read(long pageId, long page, PageHandler<X,R> h, X arg, int intArg, R lockFailed, IoStatisticsHolder statHolder) throws IgniteCheckedException- Parameters:
pageId- Page ID.page- Page pointer.h- Handler.arg- Argument.intArg- Argument of typeint.lockFailed- Result in case of lock failure due to page recycling.statHolder- Statistics holder to track IO operations.- Returns:
- Handler result.
- Throws:
IgniteCheckedException- If failed.
-
init
protected final void init(long pageId, PageIO init) throws IgniteCheckedException- Parameters:
pageId- Page ID.init- IO for new page initialization.- Throws:
IgniteCheckedException- if failed.
-
recyclePage
protected final long recyclePage(long pageId, long page, long pageAddr, Boolean walPlc) throws IgniteCheckedException- Parameters:
pageId- Page ID.page- Page pointer.pageAddr- Page address.walPlc- Full page WAL record policy.- Returns:
- Recycled page ID.
- Throws:
IgniteCheckedException- If failed.
-
pageSize
protected int pageSize()
- Returns:
- Page size without encryption overhead.
-
close
public void close()
Frees the resources allocated by this structure.
-
-