Documentation of 'org.mapdb.TxEngine' Java class
TxEngine
org.mapdb

Class TxEngine

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Engine


    public class TxEngine
    extends java.lang.Object
    implements Engine

    Naive implementation of Snapshots on top of StorageEngine. On update it takes old value and stores it aside.

    TODO merge snapshots down with Storage for best performance
    • Method Detail

      • createSnapshotFor

        public static Engine createSnapshotFor(Engine engine)
      • canSnapshot

        public boolean canSnapshot()
        Specified by:
        canSnapshot in interface Engine
        Returns:
        true if engine can create read-only snapshots
      • snapshot

        public Engine snapshot()
        Description copied from interface: Engine
        Returns read-only snapshot of data in Engine.
        Specified by:
        snapshot in interface Engine
      • getWrappedEngine

        public Engine getWrappedEngine()
        Description copied from interface: Engine
        if this is wrapper return underlying engine, or null
        Specified by:
        getWrappedEngine in interface Engine
      • clearCache

        public void clearCache()
        Description copied from interface: Engine
        clears any underlying cache
        Specified by:
        clearCache in interface Engine
      • compact

        public void compact()
        Specified by:
        compact in interface Engine
      • preallocate

        public long preallocate()
        Description copied from interface: Engine
        Preallocates recid for not yet created record. It does not insert any data into it.
        Specified by:
        preallocate in interface Engine
        Returns:
        new recid
      • put

        public <A> long put(A value,
                            Serializer<A> serializer)
        Description copied from interface: Engine
        Insert new record.
        Specified by:
        put in interface Engine
        Parameters:
        value - records to be added
        serializer - used to convert record into/from binary form
        Returns:
        recid (record identifier) under which record is stored.
      • get

        public <A> A get(long recid,
                         Serializer<A> serializer)
        Description copied from interface: Engine

        Get existing record.

        Recid must be a number returned by 'put' method. Behaviour for invalid recid (random number or already deleted record) is not defined, typically it returns null or throws 'EndOfFileException'

        Specified by:
        get in interface Engine
        Parameters:
        recid - (record identifier) under which record was persisted
        serializer - used to deserialize record from binary form
        Returns:
        record matching given recid, or null if record is not found under given recid.
      • update

        public <A> void update(long recid,
                               A value,
                               Serializer<A> serializer)
        Description copied from interface: Engine

        Update existing record with new value.

        Recid must be a number returned by 'put' method. Behaviour for invalid recid (random number or already deleted record) is not defined, typically it throws 'EndOfFileException', but it may also corrupt store.

        Specified by:
        update in interface Engine
        Parameters:
        recid - (record identifier) under which record was persisted.
        value - new record value to be stored
        serializer - used to serialize record into binary form
      • compareAndSwap

        public <A> boolean compareAndSwap(long recid,
                                          A expectedOldValue,
                                          A newValue,
                                          Serializer<A> serializer)
        Description copied from interface: Engine

        Updates existing record in atomic (Compare And Swap) manner. Value is modified only if old value matches expected value. There are three ways to match values, MapDB may use any of them:

        1. Equality check oldValue==expectedOldValue when old value is found in instance cache
        2. Deserializing oldValue using serializer and checking oldValue.equals(expectedOldValue)
        3. Serializing expectedOldValue using serializer and comparing binary array with already serialized oldValue

        Recid must be a number returned by 'put' method. Behaviour for invalid recid (random number or already deleted record) is not defined, typically it throws 'EndOfFileException', but it may also corrupt store.

        Specified by:
        compareAndSwap in interface Engine
        Parameters:
        recid - (record identifier) under which record was persisted.
        expectedOldValue - old value to be compared with existing record
        newValue - to be written if values are matching
        serializer - used to serialize record into binary form
        Returns:
        true if values matched and newValue was written
      • delete

        public <A> void delete(long recid,
                               Serializer<A> serializer)
        Description copied from interface: Engine

        Remove existing record from store/cache

        Recid must be a number returned by 'put' method. Behaviour for invalid recid (random number or already deleted record) is not defined, typically it throws 'EndOfFileException', but it may also corrupt store.

        Specified by:
        delete in interface Engine
        Parameters:
        recid - (record identifier) under which was record persisted
        serializer - which may be used in some circumstances to deserialize and store old object
      • close

        public void close()
        Description copied from interface: Engine

        Close store/cache. This method must be called before JVM exits to flush all caches and prevent store corruption. Also it releases resources used by MapDB (disk, memory..).

        Engine can no longer be used after this method was called. If Engine is used after closing, it may throw any exception including NullPointerException

        There is an configuration option DBMaker.Maker.closeOnJvmShutdown() which uses shutdown hook to automatically close Engine when JVM shutdowns.

        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface Engine
      • isClosed

        public boolean isClosed()
        Description copied from interface: Engine
        Checks whether Engine was closed.
        Specified by:
        isClosed in interface Engine
        Returns:
        true if engine was closed
      • commit

        public void commit()
        Description copied from interface: Engine
        Makes all changes made since the previous commit/rollback permanent. In transactional mode (on by default) it means creating journal file and replaying it to storage. In other modes it may flush disk caches or do nothing at all (check your config options)
        Specified by:
        commit in interface Engine
      • rollback

        public void rollback()
        Description copied from interface: Engine
        Undoes all changes made in the current transaction. If transactions are disabled it throws UnsupportedOperationException.
        Specified by:
        rollback in interface Engine
      • isReadOnly

        public boolean isReadOnly()
        Description copied from interface: Engine
        Check if you can write into this Engine. It may be readonly in some cases (snapshot, read-only files).
        Specified by:
        isReadOnly in interface Engine
        Returns:
        true if engine is read-only
      • canRollback

        public boolean canRollback()
        Specified by:
        canRollback in interface Engine
        Returns:
        true if engine supports rollback

DataMelt 3.0 © DataMelt by jWork.ORG

Ads help maintain this website.