logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

KiokuDB::Backend::Role::TXN::Memory - In memory transactions.

Author

       Yuval Kogman <nothingmuch@woobling.org>

Description

       This backend provides in memory transactions for backends which support atomic modification of data, but
       not full commit/rollback support.

       This backend works by buffering all operations in memory. Entries are kept alive allowing read operations
       go to the live entry even for objects that are out of scope.

       This implementation provides repeatable read level isolation. Durability, concurrency and atomicity are
       still the responsibility of the backend.

Name

       KiokuDB::Backend::Role::TXN::Memory - In memory transactions.

Required Methods

       commit_entries
           Insert, update or delete entries as specified.

           This operation should either fail or succeed atomically.

           Entries  with  "deleted"  should  be removed from the database, entries with a "prev" entry should be
           inserted, and all other entries should be updated.

           Multiple entries may be given for a single object, for instance an object that was first inserted and
           then modified will have an insert entry and an update entry.

       get_from_storage
           Should be the same as "get" in KiokuDB::Backend.

           When no memory buffered entries are available for the object one is fetched from the backend.

       exists_in_storage
           Required as of KiokuDB version 0.37.

           A fallback implementation is provided, but should not be used and will issue a deprecation warning.

Synopsis

           with qw(KiokuDB::Backend::Role::TXN::Memory);

           sub commit_entries {
               my ( $self, @entries ) = @_;

               # atomically apply @entries

               # deleted entries have the deleted flag set
               # if an entry has no 'prev' entry it's an insert
               # otherwise it's an update
           }

Version

       version 0.57

See Also