Liking cljdoc? Tell your friends :D

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

4.0.0 - 2026-10-07

Changed

  • Breaking: use com.aerospike/aerospike-client-jdk8 10.5.0 instead of com.aerospike/aerospike-client 6.1.10. Still runs on JDK 8 and is compatible with Aerospike server 6.4.
  • Breaking: client 10.x has no Java serialization, so only values the client stores natively can be written: nil, booleans, numbers that fit a long or double, strings, byte[], and lists and maps of these. Keywords, symbols, sets, BigInt, Ratio and other types are rejected: top-level values with Unsupported type, and nested values with Serialize error when their record is sent.
    • Top-level UUID, Character, Enum and ByteBuffer values are also accepted, and read back as String, Long, String and byte[]. Nested UUID and Enum values are stored corrupted, as in 3.x.
  • Breaking: every value 3.x stored with Java serialization, top-level or nested, reads back as the raw serialized byte[], with no error.
  • Breaking: top-level true/false bin values are stored as native Aerospike booleans instead of Java-serialized :true/:false keywords.
  • Breaking: a top-level nil bin value removes the bin instead of storing a Java-serialized :nil keyword.
    • REPLACE writes (put, put-multiple, update, replace-only) leave nil bins out of the write, because the server rejects bin deletes there.
    • REPLACE and CREATE_ONLY (create) writes whose bins are all nil are rejected with IllegalArgumentException.
    • UPDATE writes (set-single, add-bins) remove nil bins. If that leaves the record with no bins, the server deletes the record.
    • nil data (a record written as nil) is rejected for every write. Use delete instead.
  • Invalid write data (bin names, nil bins, unsupported values, transcoder exceptions) is returned as a rejected promise and reported to client-events on-failure, instead of being thrown synchronously. This includes the bin names given to delete-bins.
    • put-multiple checks every payload's nil data, nil bins, bin names and top-level values before sending any of them, and reports the first invalid payload with its index. A nested unsupported value fails only its own record, and the other records are still written.
  • aerospike-clj.mock-client rejects the same write data as the real client, except nested unsupported values, as a rejected promise. It stores records without nil bins, and an UPDATE write (set-single, add-bins, or put with a nil policy) whose bins are all nil removes those bins, and the record when none are left. delete-bins also deletes the record when no bins are left. Removing bins, including with delete-bins, advances the generation, as the server does.
  • Run integration tests against Aerospike server ee-6.4.0.7.

Added

  • aerospike-clj.bins/data->write-bins, which builds the bins for a write with a given RecordExistsAction.

Removed

  • aerospike-clj.utils/sanitize-bin-value and aerospike-clj.utils/desanitize-bin-value.

3.1.0 - 2023-08-22

Added

  • Add the aerospike-clj.collections/->list function, which is similar to clojure.core/mapv, but it's more efficient when the input is not a Clojure sequence.

Changed

  • Make the aerospike-clj.utils/v->array multi-arity, allowing to pass a mapper-fn to map the values before setting them into the array.
  • Optimize the aerospike-clj.utils/v->array function by calling java.util.Collection#toArray with a 0-length array, this will force the implementation to use the more performant java.util.Arrays.copyOf.
  • Add contents: write to the Push CI - master action, this should resolve the git push issues from the GitHub actions bot.

Deprecated

  • Deprecate aerospike-clj.utils/string-keys?.

3.0.0 - 2023-08-03

Changed

  • use aerospike client version 6.1.10
  • use test containers for integration tests

Added

  • batch operate support
  • completion executor support (with default)
  • client-events additional context support

Removed

  • empty test namespace

2.0.7 - 2023-08-03

Changed

  • Fixed a bug with reporting metrics for AerospikeSingleIndexBatchOps/operate.

Removed

  • 2 unused dev profile plugins.
  • Unnecessary integration test.

2.0.6 - 2022-12-01

Changed

  • Performance and memory optimization, mainly in the core aerospike-clj.aerospike-record/record->map function.

2.0.5 - 2022-08-15

Changed

  • TTLs for the mock client are now correctly mocked:
    • TTL is stored (and returned in get operations) as seconds from Aerospike epoch time

Updated

  • Dependencies
    • promesa 6.0.0 -> 8.0.450
    • org.clojure/tools.logging 1.1.0 -> 1.2.4

2.0.3 - 2022-07-27

Changed

  • Add missing configuration for eftest to out the test results to target/junit.xml.
  • Upgrade EnricoMi/publish-unit-test-result-action@v1.6 -> EnricoMi/publish-unit-test-result-action@v1.39.
  • Change the behavior of the mocked replace-only. It should throw an AerospikeException when the item doesn't exist.

2.0.1 - 2021-01-31

Updated

  • Links in README and CI config.

2.0.0 - 2021-01-31

Added

  • Aerospike Key - can now coerce java.util.UUID into keys alongside byte arrays, ints, longs, strings and com.aerospike.client.Value.
  • Created the protocols namespace which now holds a myriad of protocols.
    • This includes new protocols that group Aerospike operations by CRUD/admin semantics.
  • Can explicitly specify the port in the host string that is passed to the client constructor init-simple-aerospike-client.
  • Integration test namespace now has the ^:integration metadata:
    • Run unit tests with lein test
    • Run integration tests that require a locally-running Aerospike client via lein test :integration.

Changed

  • Artifact coordinates in Clojars have changed from aerospike-clj/aerospike-clj to com.appsflyer/aerospike-clj.
  • Upgraded dependency on promesa from 5.1.0 to 6.0.0.
  • Implementations of ClientEvents protocol will no longer get the DB instance for runtime parameters. Instead, they should be pre-configured at instance construction time.
  • Cleaned up the client namespace:
    • Removed the IAerospikeClient protocol it can create a collision with com.aerospike.client.IAerospikeClient. Abstracting over the Java client instance selection is of no concern to a simple client that interacts with a single cluster.
      • As a result SimpleAerospikeClient now directly uses the vars passed in construction time instead of fetching them from the client with keywords, e.g. (:el client).
      • The return type of get-cluster-stats is no longer a triply-nested vector, but a doubly-nested vector.
    • All protocols moved to protocols namespace.
    • SimpleAerospikeClient record now implements the protocols mentioned above.
  • Mock client
    • The MockClient record now implements the protocols mentioned above, so production code could now have its SimpleAerospikeClient swapped with a mock client in-place and without using with-redefs.
    • Functionality that is needed for unit testing purposes is defined in the Stateful protocol and MockClient instances are extended to this protocol.
  • Logging via tools.logging as a façade.
  • CI
    • No longer runs the lein command compile - it would be executed implicitly by test

Removed

  • The function get-multiple was removed in favor of the protocol method get-batch.
  • Dependency on timbre.

1.0.2 - 2021-01-31

Added

1.0.1 - 2020-09-02

Changed

  • add set to the record returned by batch-read

1.0.0 - 2020-08-18

This is a breaking change.

  • Chaining via implementing ClientEvents now supports passing also a vector, and results in chaining all completion by order they were given.
  • The returned result is now a Java(8<) CompletableFuture instead of manifold/Deferred.
  • All listeners factored out of the main client namespace.

0.6.0 - 2020-07-30

  • Support ClientEvents vector to be a vector of completions instead of a single one.
  • Bump aerospike lib to 4.4.15

VERSION 0.5.1

  • Added batch-exists
  • Bump aerospike lib to 4.4.10

VERSION 0.5.0

  • Added mocking for aerospike client

VERSION 0.3.8

  • Bump aerospike lib to 4.4.9

VERSION 0.3.7

  • Scan support

VERSION 0.3.6

  • Bump aerospike lib to 4.4.6

VERSION 0.3.5

  • Bump aerospike lib to 4.4.4.
  • Improve CDT tests (requires testing against aerospike server v4.6)

VERSION 0.3.4

VERSION 0.3.3

VERSION 0.3.0

VERSION 0.2.7

VERSION 0.2.6

  • Update java client to 4.3.1.

VERSION 0.2.5

VERSION 0.2.4

  • Bump Java library to 4.3.0.
  • Add put-multiple API for parallel vectoric put.
  • Bug fix: username and password keys in client policy should be strings, not keywords.
  • License changed to Apache 2.

A complete list of all java client related changes

Can you improve this documentation? These fine people already did:
Ido Barkan, asaf.chelouche, Yevgeni Tsodikov, liraz, chorin, idantavor, Asaf Chelouche, yblanke & yaron.elyashiv
Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close