public abstract class PagesList extends DataStructure
| Modifier and Type | Class and Description |
|---|---|
static class |
PagesList.PagesCache
Class to store page-list cache onheap.
|
static class |
PagesList.Stripe |
| Modifier and Type | Field and Description |
|---|---|
protected AtomicLongArray |
bucketsSize |
protected boolean |
changed |
protected IgniteLogger |
log
Logger.
|
protected String |
name
Name (for debug purposes).
|
| Modifier | Constructor and Description |
|---|---|
protected |
PagesList(int cacheId,
String name,
PageMemory pageMem,
int buckets,
IgniteWriteAheadLogManager wal,
long metaPageId,
PageLockListener lockLsnr,
GridKernalContext ctx) |
| Modifier and Type | Method and Description |
|---|---|
int |
bucketsCount()
Buckets count.
|
long |
bucketSize(int bucket)
Bucket size.
|
int |
cachedPagesCount(int bucket)
Cached pages count.
|
protected abstract boolean |
casBucket(int bucket,
PagesList.Stripe[] exp,
PagesList.Stripe[] upd) |
protected abstract PagesList.Stripe[] |
getBucket(int bucket) |
protected abstract PagesList.PagesCache |
getBucketCache(int bucket,
boolean create) |
protected abstract int |
getBucketIndex(int freeSpace)
Gets bucket index by page freespace.
|
protected void |
init(long metaPageId,
boolean initNew) |
protected long |
initReusedPage(long reusedPageId,
long reusedPage,
long reusedPageAddr,
int partId,
byte flag,
PageIO initIo)
Reused page must obtain correctly assembled page id, then initialized by proper
PageIO instance and
non-zero itemId of reused page id must be saved into special place. |
protected abstract boolean |
isReuseBucket(int bucket) |
String |
name()
Pages list name.
|
protected void |
put(@Nullable ReuseBag bag,
long dataId,
long dataPage,
long dataAddr,
int bucket,
IoStatisticsHolder statHolder) |
protected boolean |
removeDataPage(long dataId,
long dataPage,
long dataAddr,
AbstractDataPageIO dataIO,
int bucket,
IoStatisticsHolder statHolder)
Removes data page from bucket, merges bucket list if needed.
|
void |
saveMetadata(IoStatisticsHolder statHolder)
Save metadata without exclusive lock on it.
|
protected long |
storedPagesCount(int bucket)
!!!
|
int |
stripesCount(int bucket)
Stripes count.
|
protected long |
takeEmptyPage(int bucket,
@Nullable IOVersions initIoVers,
IoStatisticsHolder statHolder) |
acquirePage, allocatePage, allocatePage, allocatePageNoReuse, groupId, init, needWalDeltaRecord, pageSize, randomInt, read, read, readLock, readUnlock, recyclePage, releasePage, tryWriteLock, write, write, write, write, writeLock, writeUnlock, writeUnlockprotected final AtomicLongArray bucketsSize
protected volatile boolean changed
protected final String name
protected final IgniteLogger log
protected PagesList(int cacheId,
String name,
PageMemory pageMem,
int buckets,
IgniteWriteAheadLogManager wal,
long metaPageId,
PageLockListener lockLsnr,
GridKernalContext ctx)
cacheId - Cache ID.name - Name (for debug purpose).pageMem - Page memory.buckets - Number of buckets.wal - Write ahead log manager.metaPageId - Metadata page ID.protected final void init(long metaPageId,
boolean initNew)
throws IgniteCheckedException
metaPageId - Metadata page ID.initNew - True if new list if created, false if should be initialized from metadata.IgniteCheckedException - If failed.public void saveMetadata(IoStatisticsHolder statHolder) throws IgniteCheckedException
IgniteCheckedException - If failed.protected abstract int getBucketIndex(int freeSpace)
protected abstract PagesList.Stripe[] getBucket(int bucket)
bucket - Bucket index.protected abstract boolean casBucket(int bucket,
PagesList.Stripe[] exp,
PagesList.Stripe[] upd)
bucket - Bucket index.exp - Expected bucket.upd - Updated bucket.true If succeeded.protected abstract boolean isReuseBucket(int bucket)
bucket - Bucket index.true If it is a reuse bucket.protected abstract PagesList.PagesCache getBucketCache(int bucket, boolean create)
bucket - Bucket index.protected final long storedPagesCount(int bucket)
throws IgniteCheckedException
bucket - Bucket index.IgniteCheckedException - If failed.protected final void put(@Nullable
@Nullable ReuseBag bag,
long dataId,
long dataPage,
long dataAddr,
int bucket,
IoStatisticsHolder statHolder)
throws IgniteCheckedException
bag - Reuse bag.dataId - Data page ID.dataPage - Data page pointer.dataAddr - Data page address.bucket - Bucket.statHolder - Statistics holder to track IO operations.IgniteCheckedException - If failed.protected long takeEmptyPage(int bucket,
@Nullable
@Nullable IOVersions initIoVers,
IoStatisticsHolder statHolder)
throws IgniteCheckedException
bucket - Bucket index.initIoVers - Optional IO to initialize page.statHolder - Statistics holder to track IO operations.IgniteCheckedException - If failed.protected final long initReusedPage(long reusedPageId,
long reusedPage,
long reusedPageAddr,
int partId,
byte flag,
PageIO initIo)
throws IgniteCheckedException
PageIO instance and
non-zero itemId of reused page id must be saved into special place.reusedPageId - Reused page id.reusedPage - Reused page.reusedPageAddr - Reused page address.partId - Partition id.flag - Flag.initIo - Initial io.IgniteCheckedException - In case of failure.protected final boolean removeDataPage(long dataId,
long dataPage,
long dataAddr,
AbstractDataPageIO dataIO,
int bucket,
IoStatisticsHolder statHolder)
throws IgniteCheckedException
dataId - Data page ID.dataPage - Data page pointer.dataAddr - Data page address.dataIO - Data page IO.bucket - Bucket index.statHolder - Statistics holder to track IO operations.True if page was removed.IgniteCheckedException - If failed.public String name()
public int bucketsCount()
public long bucketSize(int bucket)
bucket - Bucket.public int stripesCount(int bucket)
bucket - Bucket.public int cachedPagesCount(int bucket)
bucket - Bucket.
Follow @ApacheIgnite
Ignite Database and Caching Platform : ver. 2.9.1 Release Date : December 9 2020