All Versions
11
Latest Version
Avg Release Cycle
95 days
Latest Release
1254 days ago

Changelog History
Page 1

  • v2.0.2 Changes

    January 01, 2023

    ๐Ÿ”„ Changes:

    • ๐Ÿ‘ป [fix] Better exception in case of file errors (such as :efbig)
  • v2.0.1 Changes

    August 30, 2022

    ๐Ÿ”„ Changes:

    • Avoid unnecessary commits in the compaction catching up phase
    • More informative error when running out of disk space
    • Avoid leaking processes when stopping CubDB during a compaction
  • v2.0.0 Changes

    June 28, 2022
    • [breaking] The functions get_and_update/3 and get_and_update_multi/3 now return directly result, instead of a {:ok, result} tuple.
    • [breaking] get_and_update_multi/4 does not take an option argument anymore, making it get_and_update_multi/3. The only available option used to be :timeout, which is not supported anymore.
    • [breaking] Remove the :timeout option on select/2. This is part of a refactoring and improvement that moves read operations from an internally spawned Task to the client process. This makes the :timeout option unnecessary: by stopping the process calling CubDB, any running read operation by that process is stopped.
    • Add snapshot/2, with_snapshot/1 and release_snapshot/1 to get zero cost read only snapshots of the database.
    • Add back_up/2 to produce a database backup. The backup process does not block readers or writers, and is isolated from concurrent writes.
    • Add halt_compaction/1 to stop any running compaction operation
    • Add compacting?/1 to check if a compaction is currently running
    • Move read and write operations to the caller process as opposed to the CubDB server process.
    • Improve concurrency of read operations while writing

    โฌ†๏ธ Upgrading from v1 to v2

    โฌ†๏ธ Upgrading from v1 to v2 requires a few simple code changes:

    1. When calling get_and_update or get_and_update_multi, the return value is not a {:ok, result} tuple anymore, but just result.
    2. get_and_update_multi does not take a fourth option argument anymore. The only available option was :timeout, which was now removed. In case you want to enforce a timeout for the update function, you can use a Task and Task.yield like explained here.
    3. The select function does not support a :timeout option anymore, so it will be ignored if passed. In order to enforce a timeout, you can wrap the select in a Task and use Task.yield like shown here
  • v2.0.0-rc.1 Changes

    May 25, 2022

    ๐Ÿ”„ Changes from v1.1.0

    โฌ†๏ธ See the CHANGELOG.md and the UPGRADING.md files for details.

    • [breaking] The functions CubDB.get_and_update/3,
      CubDB.get_and_update_multi/3, and CubDB.select/2 now return directly
      result, instead of a {:ok, result} tuple.
    • [breaking] CubDB.get_and_update_multi/4 does not take an option argument
      anymore, making it CubDB.get_and_update_multi/3. The only available option
      โฑ used to be :timeout, which is not supported anymore.
    • ๐Ÿšš [breaking] Remove the :timeout option on CubDB.select/2. This is part of
      ๐Ÿ”จ a refactoring and improvement that moves read operations from an internally
      โฑ spawned Task to the client process. This makes the :timeout option
      unnecessary: by stopping the process calling CubDB, any running read
      operation by that process is stopped.
    • [breaking] CubDB.select/2 now returns a lazy stream that can be used with
      functions in Enum and Stream. This makes the :pipe and :reduce
      ๐Ÿšš options unnecessary, so those options were removed.
    • โž• Add CubDB.snapshot/2, CubDB.with_snapshot/1 and
      ๐Ÿš€ CubDB.release_snapshot/1 to get zero cost read-only snapshots of the
      database. The functions in CubDB.Snapshot allow to read from a snapshot.
    • โž• Add CubDB.transaction/2 to perform multiple write (and read) operations in
      a single atomic transaction. The functions in CubDB.Tx allow to read and
      write inside a transaction.
    • โž• Add CubDB.back_up/2 to produce a database backup. The backup process does
      not block readers or writers, and is isolated from concurrent writes.
    • โž• Add CubDB.halt_compaction/1 to stop any running compaction operation
    • โž• Add CubDB.compacting?/1 to check if a compaction is currently running
    • ๐Ÿšš Move read and write operations to the caller process as opposed to the
      CubDB server process.
    • ๐Ÿ‘Œ Improve concurrency of read operations while writing
  • v1.1.0 Changes

    October 14, 2021

    ๐Ÿ”„ Changes:

    • โž• Add clear/1 function to atomically delete all entries in the database
  • v1.0.0 Changes

    June 24, 2021

    ๐Ÿ‘€ See the CHANGELOG for details on changes

  • v1.0.0-rc.9 Changes

    April 19, 2021

    ๐Ÿ”„ Changes:

    • [fix] fix process (and file descriptor) leak upon compaction
  • v1.0.0-rc.8 Changes

    March 08, 2021

    ๐Ÿ”„ Changes:

    • โœ‚ Remove default GenServer timeouts
  • v1.0.0-rc.7 Changes

    February 04, 2021

    ๐Ÿ”„ Changes:

    • put_and_delete_multi and put_multi have no caller timeout, consistently with the other functions.
  • v1.0.0-rc.10 Changes

    April 25, 2021

    ๐Ÿ”„ Changes

    • [fix] Fix CubDB.cubdb_file?/1 regexp, making it stricter