Skip to content

Releases: lucaong/cubdb

v2.0.2

01 Jan 17:33
Compare
Choose a tag to compare

Changes:

  • [fix] Better exception in case of file errors (such as :efbig)

v2.0.1

30 Aug 08:39
Compare
Choose a tag to compare

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

28 Jun 10:31
Compare
Choose a tag to compare

Version 2.0.0 brings better concurrency, atomic transactions with arbitrary
operations, zero cost read-only snapshots, database backup, and more, all with a
simpler and more scalable internal architecture.

Refer to the upgrade guide for how to
upgrade from previous versions.

  • [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/2 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

v2.0.0-rc.1

25 May 12:24
Compare
Choose a tag to compare
v2.0.0-rc.1 Pre-release
Pre-release

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

14 Oct 08:42
Compare
Choose a tag to compare

Changes:

  • Add clear/1 function to atomically delete all entries in the database

v1.0.0

24 Jun 15:36
Compare
Choose a tag to compare

See the CHANGELOG for details on changes

v1.0.0-rc.10

25 Apr 13:33
Compare
Choose a tag to compare

Changes

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

v1.0.0-rc.9

19 Apr 09:35
Compare
Choose a tag to compare

Changes:

  • [fix] fix process (and file descriptor) leak upon compaction

v1.0.0-rc.8

08 Mar 10:14
Compare
Choose a tag to compare

Changes:

  • Remove default GenServer timeouts

v1.0.0-rc.7

04 Feb 14:48
Compare
Choose a tag to compare

Changes:

  • put_and_delete_multi and put_multi have no caller timeout, consistently with the other functions.