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.
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.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.
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.byte[], with no error.true/false bin values are stored as native Aerospike booleans instead of Java-serialized
:true/:false keywords.nil bin value removes the bin instead of storing a Java-serialized :nil keyword.
put, put-multiple, update, replace-only) leave nil bins out of the write, because the
server rejects bin deletes there.create) writes whose bins are all nil are rejected with IllegalArgumentException.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.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.ee-6.4.0.7.aerospike-clj.bins/data->write-bins, which builds the bins for a write with a given RecordExistsAction.aerospike-clj.utils/sanitize-bin-value and aerospike-clj.utils/desanitize-bin-value.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.aerospike-clj.utils/v->array multi-arity, allowing to pass a mapper-fn to map the values before setting
them into the array.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.aerospike-clj.utils/string-keys?.AerospikeSingleIndexBatchOps/operate.aerospike-clj.aerospike-record/record->map function.EnricoMi/publish-unit-test-result-action@v1.6 -> EnricoMi/publish-unit-test-result-action@v1.39.replace-only.
It should throw an AerospikeException when the item doesn't exist.Key - can now coerce java.util.UUID into keys alongside byte arrays,
ints, longs, strings and com.aerospike.client.Value.protocols namespace which now holds a myriad of protocols.
init-simple-aerospike-client.^:integration metadata:
lein testlein test :integration.aerospike-clj/aerospike-clj
to com.appsflyer/aerospike-clj.promesa from 5.1.0 to 6.0.0.ClientEvents protocol will no longer get the DB instance
for runtime parameters. Instead, they should be pre-configured at instance construction time.client namespace:
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.
SimpleAerospikeClient now directly uses the vars passed in
construction time instead of fetching them from the client with keywords, e.g. (:el client).get-cluster-stats is no longer a triply-nested vector,
but a doubly-nested vector.protocols namespace.SimpleAerospikeClient record now implements the protocols mentioned above.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.Stateful protocol and MockClient instances are extended to this protocol.tools.logging as a façade.compile - it would be executed implicitly by testget-multiple was removed in favor of the protocol method get-batch.timbre.clj-kondo.ClientEvents now supports passing also a vector,
and results in chaining all completion by order they were given.CompletableFuture instead of manifold/Deferred.client namespace.update policy. liraz.meyer@appsflyer.comreplace_only policy. dana.borinski@appsflyer.comput-multiple API for parallel vectoric put.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.elyashivEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |