Class PagesList

    • Constructor Detail

      • PagesList

        protected PagesList​(int cacheGrpId,
                            String name,
                            PageMemory pageMem,
                            int buckets,
                            @Nullable
                            @Nullable IgniteWriteAheadLogManager wal,
                            long metaPageId,
                            PageLockTrackerManager pageLockTrackerManager,
                            GridKernalContext ctx,
                            byte pageFlag)
        Parameters:
        cacheGrpId - Cache group ID.
        name - Name (for debug purpose).
        pageMem - Page memory.
        buckets - Number of buckets.
        metaPageId - Metadata page ID.
        pageFlag - Default flag value for allocated pages.
    • Method Detail

      • init

        protected final void init​(long metaPageId,
                                  boolean initNew)
                           throws IgniteCheckedException
        Parameters:
        metaPageId - Metadata page ID.
        initNew - True if new list if created, false if should be initialized from metadata.
        Throws:
        IgniteCheckedException - If failed.
      • getPageFreeSpace

        public abstract int getPageFreeSpace​(int bucket)
        Gets per page free space for specified bucket.
        Returns:
        Free space available to use for each page in specified bucket.
      • getBucketIndex

        protected abstract int getBucketIndex​(int freeSpace)
        Gets bucket index by page freespace.
        Returns:
        Bucket index or -1 if page doesn't belong to any bucket.
      • getBucket

        protected abstract PagesList.Stripe[] getBucket​(int bucket)
        Parameters:
        bucket - Bucket index.
        Returns:
        Bucket.
      • casBucket

        protected abstract boolean casBucket​(int bucket,
                                             PagesList.Stripe[] exp,
                                             PagesList.Stripe[] upd)
        Parameters:
        bucket - Bucket index.
        exp - Expected bucket.
        upd - Updated bucket.
        Returns:
        true If succeeded.
      • isReuseBucket

        protected abstract boolean isReuseBucket​(int bucket)
        Parameters:
        bucket - Bucket index.
        Returns:
        true If it is a reuse bucket.
      • getBucketCache

        protected abstract PagesList.PagesCache getBucketCache​(int bucket,
                                                               boolean create)
        Parameters:
        bucket - Bucket index.
        Returns:
        Bucket cache.
      • storedPagesCount

        protected final long storedPagesCount​(int bucket)
                                       throws IgniteCheckedException
        !!! For tests only, does not provide any correctness guarantees for concurrent access.
        Parameters:
        bucket - Bucket index.
        Returns:
        Number of pages stored in this list.
        Throws:
        IgniteCheckedException - If failed.
      • put

        protected final void put​(@Nullable
                                 @Nullable ReuseBag bag,
                                 long dataId,
                                 long dataPage,
                                 long dataAddr,
                                 int bucket,
                                 IoStatisticsHolder statHolder)
                          throws IgniteCheckedException
        Parameters:
        bag - Reuse bag.
        dataId - Data page ID.
        dataPage - Data page pointer.
        dataAddr - Data page address.
        bucket - Bucket.
        statHolder - Statistics holder to track IO operations.
        Throws:
        IgniteCheckedException - If failed.
      • takeEmptyPage

        protected long takeEmptyPage​(int bucket,
                                     @Nullable
                                     @Nullable IOVersions initIoVers,
                                     IoStatisticsHolder statHolder)
                              throws IgniteCheckedException
        Parameters:
        bucket - Bucket index.
        initIoVers - Optional IO to initialize page.
        statHolder - Statistics holder to track IO operations.
        Returns:
        Removed page ID.
        Throws:
        IgniteCheckedException - If failed.
      • initReusedPage

        protected final long initReusedPage​(long reusedPageId,
                                            long reusedPage,
                                            long reusedPageAddr,
                                            int partId,
                                            byte flag,
                                            PageIO initIo)
                                     throws IgniteCheckedException
        Reused page must obtain correctly assaembled page id, then initialized by proper PageIO instance and non-zero itemId of reused page id must be saved into special place.
        Parameters:
        reusedPageId - Reused page id.
        reusedPage - Reused page.
        reusedPageAddr - Reused page address.
        partId - Partition id.
        flag - Flag.
        initIo - Initial io.
        Returns:
        Prepared page id.
        Throws:
        IgniteCheckedException - In case of failure.
      • removeDataPage

        protected final boolean removeDataPage​(long dataId,
                                               long dataPage,
                                               long dataAddr,
                                               AbstractDataPageIO dataIO,
                                               int bucket,
                                               IoStatisticsHolder statHolder)
                                        throws IgniteCheckedException
        Removes data page from bucket, merges bucket list if needed.
        Parameters:
        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.
        Returns:
        True if page was removed.
        Throws:
        IgniteCheckedException - If failed.
      • bucketsCount

        public int bucketsCount()
        Buckets count.
      • bucketSize

        public long bucketSize​(int bucket)
        Bucket size.
        Parameters:
        bucket - Bucket.
      • stripesCount

        public int stripesCount​(int bucket)
        Stripes count.
        Parameters:
        bucket - Bucket.
      • cachedPagesCount

        public int cachedPagesCount​(int bucket)
        Cached pages count.
        Parameters:
        bucket - Bucket.
      • metaPageId

        public long metaPageId()
        Returns:
        Meta page id.
      • corruptedFreeListException

        protected CorruptedFreeListException corruptedFreeListException​(Throwable err,
                                                                        long... pageIds)
        Parameters:
        err - Error that caused this exception.
        pageIds - Ids of possibly corrupted pages.
        Returns:
        Exception of type CorruptedFreeListException that wraps original error and ids of possibly corrupted pages.
      • corruptedFreeListException

        protected CorruptedFreeListException corruptedFreeListException​(String msg,
                                                                        long... pageIds)
        Parameters:
        msg - Exception message.
        pageIds - Ids of possibly corrupted pages.
        Returns:
        Exception of type CorruptedFreeListException that wraps original error and ids of possibly corrupted pages.
      • corruptedFreeListException

        protected CorruptedFreeListException corruptedFreeListException​(String msg,
                                                                        @Nullable
                                                                        @Nullable Throwable err,
                                                                        long... pageIds)
        Parameters:
        msg - Exception message.
        err - Error that caused this exception.
        pageIds - Ids of possibly corrupted pages.
        Returns:
        Exception of type CorruptedFreeListException that wraps original error and ids of possibly corrupted pages.