Class Chunk<C extends Chunk<C>>

  • Direct Known Subclasses:
    SFChunk

    public abstract class Chunk<C extends Chunk<C>>
    extends java.lang.Object
    A chunk of data, containing one or multiple pages.

    Minimum chunk size is usually 4096 bytes, and it grows in those fixed increments (blocks). Chunk's length and it's position in the underlying filestore are multiples of that increment (block size), therefore they both are measured in blocks, instead of bytes. There are at most 67 million (2^26) chunks, and each chunk is at most 2 GB large.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      long block
      The start block number within the file.
      java.nio.ByteBuffer buffer
      ByteBuffer holding this Chunk's serialized content before it gets saved to file store.
      int id
      The chunk id.
      int len
      The length in number of blocks.
      int mapId
      The last used map id.
      static int MAX_ID
      The maximum chunk id.
      long maxLen
      The sum of the max length of all pages.
      long maxLenLive
      The sum of the length of all pages that are still alive.
      long next
      The predicted position of the next chunk.
      long time
      When this chunk was created, in milliseconds since the store was created.
      long unused
      When this chunk was no longer needed, in milliseconds after the store was created.
      long version
      The version stored in this chunk.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String asString()
      Get the chunk metadata as a string to be stored in a layout map.
      protected void dump​(java.lang.StringBuilder buff)  
      boolean equals​(java.lang.Object o)  
      java.lang.String getHeader()  
      int hashCode()  
      protected abstract java.nio.ByteBuffer readFully​(FileStore<C> fileStore, long filePos, int length)  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • id

        public final int id
        The chunk id.
      • block

        public volatile long block
        The start block number within the file.
      • len

        public int len
        The length in number of blocks.
      • maxLen

        public long maxLen
        The sum of the max length of all pages.
      • maxLenLive

        public long maxLenLive
        The sum of the length of all pages that are still alive.
      • version

        public long version
        The version stored in this chunk.
      • time

        public long time
        When this chunk was created, in milliseconds since the store was created.
      • unused

        public long unused
        When this chunk was no longer needed, in milliseconds after the store was created. After this, the chunk is kept alive a bit longer (in case it is referenced in older versions).
      • mapId

        public int mapId
        The last used map id.
      • next

        public long next
        The predicted position of the next chunk.
      • buffer

        public volatile java.nio.ByteBuffer buffer
        ByteBuffer holding this Chunk's serialized content before it gets saved to file store. This allows to release pages of this Chunk earlier, allowing them to be garbage collected.
    • Method Detail

      • readFully

        protected abstract java.nio.ByteBuffer readFully​(FileStore<C> fileStore,
                                                         long filePos,
                                                         int length)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • asString

        public final java.lang.String asString()
        Get the chunk metadata as a string to be stored in a layout map.
        Returns:
        the string
      • dump

        protected void dump​(java.lang.StringBuilder buff)
      • getHeader

        public java.lang.String getHeader()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object