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.
3.1.0 - 2023-08-22
- Add the
aerospike-clj.collections/->list
function, which is similar toclojure.core/mapv
, but it's more efficient when the input is not a Clojure sequence.
- Make the
aerospike-clj.utils/v->array
multi-arity, allowing to pass amapper-fn
to map the values before setting them into the array. - Optimize the
aerospike-clj.utils/v->array
function by callingjava.util.Collection#toArray
with a 0-length array, this will force the implementation to use the more performantjava.util.Arrays.copyOf
. - Add contents: write to the Push CI - master action, this should resolve the git push issues from the GitHub actions bot.
- Deprecate
aerospike-clj.utils/string-keys?
.
3.0.0 - 2023-08-03
- use aerospike client version 6.1.10
- use test containers for integration tests
- batch operate support
- completion executor support (with default)
- client-events additional context support
- empty test namespace
2.0.7 - 2023-08-03
- Fixed a bug with reporting metrics for
AerospikeSingleIndexBatchOps/operate
.
- 2 unused dev profile plugins.
- Unnecessary integration test.
2.0.6 - 2022-12-01
- Performance and memory optimization, mainly in the core
aerospike-clj.aerospike-record/record->map
function.
2.0.5 - 2022-08-15
- TTLs for the mock client are now correctly mocked:
- TTL is stored (and returned in get operations) as seconds from Aerospike epoch time
- Dependencies
- promesa 6.0.0 -> 8.0.450
- org.clojure/tools.logging 1.1.0 -> 1.2.4
2.0.3 - 2022-07-27
- 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
- Links in README and CI config.
2.0.0 - 2021-01-31
- Aerospike
Key
- can now coercejava.util.UUID
into keys alongside byte arrays, ints, longs, strings andcom.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
.
- Run unit tests with
- Artifact coordinates in Clojars have changed from
aerospike-clj/aerospike-clj
tocom.appsflyer/aerospike-clj
. - Upgraded dependency on
promesa
from5.1.0
to6.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 withcom.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 theclient
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.
- As a result
- All protocols moved to
protocols
namespace. SimpleAerospikeClient
record now implements the protocols mentioned above.
- Removed the
- Mock client
- The
MockClient
record now implements the protocols mentioned above, so production code could now have itsSimpleAerospikeClient
swapped with a mock client in-place and without usingwith-redefs
. - Functionality that is needed for unit testing purposes is defined in the
Stateful
protocol andMockClient
instances are extended to this protocol.
- The
- Logging via
tools.logging
as a façade. - CI
- No longer runs the lein command
compile
- it would be executed implicitly bytest
- No longer runs the lein command
- The function
get-multiple
was removed in favor of the protocol methodget-batch
. - Dependency on
timbre
.
1.0.2 - 2021-01-31
- This CHANGELOG now follows keepachangelog.
- CI with GitHub Actions.
- Linting with
clj-kondo
.
1.0.1 - 2020-09-02
- add set to the record returned by batch-read
1.0.0 - 2020-08-18
- 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 ofmanifold/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
- Added batch-exists
- Bump aerospike lib to 4.4.10
- Added mocking for aerospike client
- Bump aerospike lib to 4.4.9
- Scan support
- Bump aerospike lib to 4.4.6
- Bump aerospike lib to 4.4.4.
- Improve CDT tests (requires testing against aerospike server v4.6)
- Rename set to set-single. liraz.meyer@appsflyer.com
- Support set with
update
policy. liraz.meyer@appsflyer.com
- Support multiple bins! dhruvil.patel@kirasystems.com
- Update java client to 4.4.0.
- Support put with
replace_only
policy. dana.borinski@appsflyer.com
- Update java client to 4.3.1.
- More accurate time measurements. ben.chorin@appsflyer.com
- 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.