C Client Library Release Notes

  • 5.2.0
    Release Date: April 30, 2021


    • CLIENT-1461 Support boolean particle type. This feature requires server version 5.6+.

    • CLIENT-1475 Support new math, bit, and conditional expressions. These expressions require server version 5.6+.

    • CLIENT-1486 Support user quotas and statistics. This feature requires server version 5.6+.

    • CLIENT-1496 Support info_timeout in as_policy_query. The info_timeout is used when fail_on_cluster_change is true and the info validation command is called before/after the query.

    • CLIENT-1501 Remove as_scan.priority, as_scan.percent and as_policy_scan.fail_on_cluster_change. The server no longer supports these fields. See Incompatible API change.

    • CLIENT-1503 Remove support for Ubuntu 16.0.4.

    • Move benchmarks to a separate repository (https://github.com/aerospike/aerospike-benchmark).


    • CLIENT-1485 Remove ability to configure password hash as the password when using authentication. See Incompatible API change.

    • CLIENT-1487 Remove ability to use old authentication protocol since the new authentication protocol was created in server version 4.1 and the client already requires server version 4.9+.

    • CLIENT-1487 Deprecate aerospike_info_socket_address().

    • CLIENT-1487 Reference count session token.

  • 5.1.1
    Release Date: March 22, 2021


    • CLIENT-1473 Accept new bool particle type on reads, but continue writing bool as an integer bin. This is an interim step that allows rolling upgrades with bool support when server version 5.6 is released.


    • CLIENT-1451 Fix segfault caused by wrong variable type when scan "node not found" error message is generated.

  • 5.1.0
    Release Date: February 5, 2021


    • CLIENT-1443 Remove support for CentOS 6.

    • Point to homebrew libevent directory when compiling with libevent on MacOS.

    • Sign aerospike libraries when packaging on MacOS.


    • CLIENT-1440 Unpack msgpack boolean to as_boolean instead of as_integer. CDT (list/map) reads that expect integers to be returned from booleans, must be changed to expect boolean values. See Incompatible API change.

  • 5.0.3
    Release Date: January 5, 2021


    • CLIENT-1387 Deprecate as_operations_map_decrement(). Use as_operations_map_increment() with negative value instead.

    • Add error code AEROSPIKE_LOST_CONFLICT.


    • CLIENT-1391 Reset peers, partition and rebalance generations on node tend errors. This forces a client node refresh when a node is quickly restarted with the same generation, but with different peers, partition maps or rack nodes.

    • CLIENT-1397 Sort unordered map before packing when map flags indicate sorting should be performed.

  • 5.0.2
    Release Date: November 30, 2020


    • CLIENT-1378 Add aerospike_set_xdr_filter() and as_exp_destroy_b64().

    • CLIENT-1382 Allow a user to define compression and compression ratio for binary data in benchmark.


    • CLIENT-1380 Async queries timeout in the delay queue when fail_on_cluster_change is true and some query node commands are placed in the delay queue. Fixed by releasing the query node command (which decrements the event loop pending counter) before the final fail_on_cluster_change validation.

    • CLIENT-1381 Do not define MSG_NOSIGNAL for MacOS because new versions of MacOS already define it.

    • Remove policy comments that indicate server version behavior prior to 4.9, since the client requires server version 4.9+.

    • Remove unnecessary include in as_exp.h.

  • 5.0.1
    Release Date: November 11, 2020
    • Requires server version 4.9+.


    • CLIENT-1373 Retrofit support for old PredExp in addition to new Expressions. Both expression filters will be supported for 1 year in order to ease the transition to new Expression APIs. After that, PredExp support will be permanently removed. Also, support server version 4.9+ instead of the more strict requirement. Expression API usage still requires server

    • Add as_exp_memory_size(). This expression macro requires server version 5.3+.


    • CLIENT-1374 Fix use-after-free condition when async scan/query finishes before final executor task count check.

  • 5.0.0
    Release Date: October 21, 2020
    • Requires server version It's not recommended to use this client version since client 5.0.1 has more relaxed server version requirements.


    • CLIENT-1359 Replace PredExp with new Expressions. Expression filters give access to the full data type APIs (List, Map, Bit, HyperLogLog, Geospatial) and expanded metadata based filtering, to increase the power of filters in selecting records. This client requires server version See Incompatible API change.

    • CLIENT-1369 Remove legacy client code for old servers since this client now requires server version


    • CLIENT-1355 Skip orphan seeds that do not have peers when other seeds have peers.

    • Remove "as_policy_apply.gen" and "as_policy_apply.gen_value" because the server does not support these fields in UDF calls. The read-modify-write usage model can still be enforced inside the UDF code itself.

    • Change HLL mh_bit_count limit documentation to 51.

  • 4.6.21
    Release Date: April 13, 2021


    • CLIENT-1496 Support info_timeout in as_policy_query. The info_timeout is used when fail_on_cluster_change is true and the info validation command is called before/after the query.

  • 4.6.20
    Release Date: February 8, 2020


    • CLIENT-1440 Unpack msgpack boolean to as_boolean instead of as_integer. CDT (list/map) reads that expect integers to be returned from booleans, must be changed to expect boolean values. See Incompatible API change.

  • 4.6.19
    Release Date: November 30, 2020


    • CLIENT-1380 Async queries timeout in the delay queue when fail_on_cluster_change is true and some query node commands are placed in the delay queue. Fixed by releasing the query node command (which decrements the event loop pending counter) before the final fail_on_cluster_change validation.

    • CLIENT-1381 Do not define MSG_NOSIGNAL for MacOS because new versions of MacOS already define it.

  • 4.6.18
    Release Date: August 14, 2020


    • Add support for Ubuntu 20.04.

    • Drop support for Ubuntu 14.04.


    • CLIENT-1310 Allow "as_scan.percent" to be sent for server versions >= 4.9 when percent is changed from the default. Also, return an error if both scan percent and "as_policy_scan.max_records" are changed from the default. Scan percent/max_records are mutually exclusive.

    • Fix doxygen warnings in aerospike struct and as_map_write_flags enum references.

  • 4.6.17
    Release Date: July 9, 2020


    • CLIENT-1291 Allow max_socket_idle to be set to zero (no reap). Connections retrieved from pools in transaction threads will not be checked for max_socket_idle when max_socket_idle is zero. Idle connections will still be trimmed down from peak connections to min connections in the cluster tend thread using a hard-coded 55 second limit when max_socket_idle is zero.

    • CLIENT-1305 Disable sleep_between_retries on first failure when retry target node is likely to change.


    • CLIENT-1306 Fix potential async scan/query crash when one query node command fails before another query node command starts.

    • CLIENT-1301 Use consistent as_error/as_status error return codes in sync commands.

    • Remove interim bool in as_node_get_connection().

    • Return correct status code if server response header is corrupted.

    • Increase role name char limit to 64.

  • 4.6.16
    Release Date: May 11, 2020


    • CLIENT-1278 Support minimum connections.


    • CLIENT-1285 Handle NULL pipeline connection when a timeout occurs between retry signal and actual retry.

  • 4.6.15
    Release Date: April 28, 2020


    • CLIENT-1273 Eliminate async cross thread commands when operating in libevent single thread mode.

    • Add new libevent single thread mode functions as_event_loop_register_aerospike(), as_event_loop_close_aerospike() and as_event_close_loop().

    • Restructure async timer functions.

    • CLIENT-1206 Support lua loadstring.

    • Add new server config allow-ttl-without-nsup to travis test environment.

  • 4.6.14
    Release Date: April 5, 2020


    • CLIENT-1170 Support partition scans. This feature requires server versions >= 4.9.

    • CLIENT-1201 Support max_records in scans. This feature requires server versions >= 4.9.

    • CLIENT-1202 Support creation of list/map in a CDT context. This feature requires server versions >= 4.9.

    • CLIENT-1234 Support HyperLogLog (HLL) operations. This feature requires server versions >= 4.9.


    • CLIENT-1160 For single record transactions, send socket_timeout to the server instead of total_timeout when socket_timeout < total_timeout.

    • CLIENT-1207 Fix use-after-free bug in async retry.

    • Set conn->watching = 0 when watcher is stopped for libev/libevent.

    • Add mutex lock in as_set_external_event_loop().

    • Increment event loop error count in as_uv_fd_error().

    • Reset event loop error count only when connection callback succeeds and not when connection is registered by uv_tcp_connect() for libuv.

    • CLIENT-1218 Set compression level to Z_BEST_SPEED (1) when compression is enabled.

    • CLIENT-1272 Fix recursive stack overflow when async commands executed directly in event loop thread repeatedly cannot find a valid node.

    • Port cpu assignment to FreeBSD.

    • Fix batch docs to reference as_batch_read_destroy() to clean up as_batch_read_records.

    • Add complex batch read example with string keys and values.

    • Change benchmarks timeouts and max_retries defaults.

  • 4.6.13
    Release Date: February 20, 2020


    • Support batch calls in benchmarks.

    • Add socket timeout command line argument in benchmarks.


    • CLIENT-1199 Fix async batch retry crash. Set proper flags on async batch retry.

    • Defer to original error if async batch retry executor is already invalid.

    • Retry batch commands at end of async queue to give other commands a chance to run.

    • CLIENT-1198 Fix background scan/query with map write operations.

    • CLIENT-1166 Increase AS_MAX_NAMESPACES to 128 to account for deleted namespaces.

    • Only run enterprise tests on enterprise servers.

  • 4.6.12
    Release Date: January 13, 2020


    • CLIENT-1166 Fix crash when new namespace is dynamically added during rolling server upgrade.

    • CLIENT-1168 Fix as_async_update_max_conns() so async connection limits are safely updated.

    • CLIENT-1169 Fix async authentication message type header validation.

    • In benchmarks, reserve fixed value for every bin.

  • 4.6.10
    Release Date: January 6, 2020


    • Set write flag for background operations scan.

    • Add test for background operations scan.

    • Remove luaconf.h correctly on make clean.

    Known Issues

    • CLIENT-1168 Fix as_async_update_max_conns() so async connection limits are safely updated. Fixed in version 4.6.12.

  • 4.6.9
    Release Date: December 4, 2019


    • CLIENT-1156 Support compressed commands and responses. This feature requires Enterprise Server versions >= 4.8.

    • Support RedHat/Centos 8.

    • Support EXT_LDFLAGS environment variable in test makefile.


    • CLIENT-1149 Fix segfault when background query with operations is run on a server that does not support this feature.

    • Fix memory leak when initial arraylist capacity is set to zero.

    • Remove obsolete transaction-queues server config in travis.

    Known Issues

    • CLIENT-1168 Fix as_async_update_max_conns() so async connection limits are safely updated. Fixed in version 4.6.12.

  • 4.6.8
    Release Date: October 1, 2019


    • CLIENT-1120 Support predicate expressions for all transactions.

    • CLIENT-1127 Support write operations in background scan/query.

    • CLIENT-1128 Support records_per_second to limit scan throughput.

    • CLIENT-1129 Add total opened/closed connection counts per node to cluster statistics.

    • Wrap as_queue in as_async_conn_pool.


    • CLIENT-1139 Fix segfault when an error occurs in as_tls_context_setup().

    • Remove unused lua-core files from makefiles and windows install.

    • Document that bit operations on bitmap items nested in lists/maps are not currently supported by the server.

    • Fix documentation result for as_operations_bit_get().

  • 4.6.7
    Release Date: August 23, 2019


    • CLIENT-1123 Support delete record operation in aerospike_key_operate(). This feature requires server versions >= 4.7.


    • CLIENT-1125 Destroy as_val items in addition to the context list in as_cdt_ctx_destroy().

  • 4.6.6
    Release Date: August 20, 2019


    • CLIENT-1119 Do not verify record digest in batch read. The returned digests might not be sent back in future server releases.

    • Add as_cdt_ctx_init(), as_cdt_ctx_create() and as_cdt_ctx_destroy().


    • CLIENT-1122 Use correct item size in as_cdt_ctx_inita().

    • Remove limit for maxRetries argument in benchmarks.

  • 4.6.5
    Release Date: August 2, 2019


    • CLIENT-1115 Support bitwise operations. This feature requires server versions >= 4.6.

    • CLIENT-1116 Support nested CDT operations. This feature requires server versions >= 4.6.

    • CLIENT-1118 Support mixed security modes in cluster to enable rolling upgrade with security changes.

    • Add aerospike_info_node_async().


    • CLIENT-1117 Fix async info commands that were broken in client version 4.6.4.

  • 4.6.4
    Release Date: July 24, 2019


    • Support Debian 10. Drop support for Debian 7.

    • TOOLS-1342 Support write only (write) privilege for user roles.

    • TOOLS-1343 Support IP address whitelist functionality for user roles.


    • CLIENT-1077 Perform retry when current node has exhausted all connections.

    • CLIENT-1078 For replica AS_POLICY_REPLICA_PREFER_RACK, do not retry on same node where command failed if a fallback node exists on any rack.

    • CLIENT-1080 Verify version, type and size when reading all message headers.

    • CLIENT-1089 Use first valid seed node when iterating through seeds on cluster initialization. That seed node will provide the other peer nodes in the cluster.

  • 4.6.3
    Release Date: May 13, 2019


    • CLIENT-1070 Support TLS when using the async libuv event library.


    • In aerospike_index_create_is_done(), return false if "load_pct" info attribute is not found.

    • In aerospike_udf_put_is_done(), return false if node count is zero.

    • In examples, increase initial wait time to 1 second before checking if udf create succeeded.

  • 4.6.2
    Release Date: April 12, 2019


    • Fix max_socket_idle overflow when converting nanoseconds.

    • Push pipeline connections to the end of the pipeline connection pool. All other connection types are still pushed to the head of the pool.

  • 4.6.1
    Release Date: April 4, 2019


    • CLIENT-1069 Fix async libuv case where uv_read_stop() is called after connection is put back into the connection pool.

    • Fix C++ compile by casting void* partition to appropriate structure depending on shared memory configuration.

    Known Issues

    • max_socket_idle conversion to nanoseconds can result in overflow. This means idle connections will be removed from the connection pools much sooner than expected. Fixed in version 4.6.2

  • 4.6.0
    Release Date: March 28, 2019


    • CLIENT-1068 Support new relaxed read modes for SC namespaces.

    • CLIENT-1059 Use stack based connection pools for more aggressive trimming of idle connections.

    • AER-6027 Remove support for old SSLv3 protocol.

    • Default max_socket_idle to 55 seconds for all pooled connections.

    • Replace linearize_read bool with as_policy_read_mode_sc enum. See Incompatible API change.

    • Rename consistency_level to read_mode_ap.


    • CLIENT-1061 Return AEROSPIKE_ERR_INVALID_NODE when node is not found for partition.

    • Do not retry on on error code AEROSPIKE_ERR_NO_MORE_CONNECTIONS.

    • Document that error code AEROSPIKE_ERR_CLUSTER means data partition not available.

    Known Issues

    • max_socket_idle conversion to nanoseconds can result in overflow. This means idle connections will be removed from the connection pools much sooner than expected. Fixed in version 4.6.2

  • 4.5.0
    Release Date: February 19, 2019


    • CLIENT-1056 If batch read transaction fails on a node, retry batch keys from that node to other nodes when replica policy is SEQUENCE and maxRetries is not exceeded.

    • CLIENT-1057 Conform to server fallback and retry behavior specification.

    • CLIENT-1058 Verify connection is valid in as_uv_command_buffer() and as_uv_auth_command_buffer() when using libuv.

    • AER-6009 Support new server "truncate-namespace" info command.

    • Server behavior for UDF delete has changed. Server now returns success when deleting a UDF that does not exist.

    • Default socket idle timeout to 30 seconds for all commands.

    • Remove aerospike_has_double(). All servers that this client supports (servers >= 3.6.0), also support the double data type. See Incompatible API change.

    • Remove all unused old batch direct protocol code.

    • Change benchmarks asyncMaxCommands argument default to 50. Fix benchmarks readme.

    • Change MS nuspec files to use new license tag.


    • Convert internal batch node array into a dynamically resized as_vector so rare edge case (more nodes in partition map than in cluster during some migrations) is handled.

    • Always default to "replicas-all" when newer "replicas" info command not supported.

    • Remove query_init with multiple filters in examples.

  • 4.4.1
    Release Date: January 15, 2019


    • CLIENT-1053 Do not clear partition map entry when a node reports that it no longer owns that partition entry. The client will now wait until another node claims ownership of that partition with the proper regime. This is done to remove any possible gaps in node ownership.

  • 4.4.0
    Release Date: December 4, 2018


    • AER-5957 Support rack aware clients.

    • Add event loop statistics, as_event_loop_get_process_size() and as_event_loop_get_queue_size().

    • Shared memory layout has changed. The default as_config shm_key has changed to 0xA8000000 so old client applications do not mix shared memory with new client applications. If you are using shared memory clients with a custom shm_key, it's critical that this key changes when linking with the new Aerospike client library.


    • Fix potential memory leak if "as_key_new" functions are used and the namespace or set length is greater than specified capacity.

    • Remove unused error codes.

    • Change admin message version to 2.

  • 4.3.20
    Release Date: November 8, 2018


    • CLIENT-1049 Provide more descriptive error message when namespace can't be found in partition map.

    • AER-5955 Support truncate info command argument "lut=now" for servers that require it.


    • Remove the ability to force old batch direct protocol on the client because the server will be removing support for the old batch direct protocol. See Incompatible API change.

    • In as_set_node_address(), ask for node name to verify non-blocking socket connect() was successful.

    • Add info message when node's address is switched to node's access-address (defined on server).

    • Add node IP address to error message in as_info_command_node().

    • Use more portable byte swap macros on linux.

    • Re-port to alpine linux.

    • Removed unused cp_mode indicator.

    • Remove system-path from travis aerospike.conf.

  • 4.3.19
    Release Date: October 11, 2018


    • CLIENT-1045 Initialize session token properly when using C client with shared memory enabled.

    • Make as_msgpack_ext.h a public header file.

  • 4.3.18
    Release Date: October 1, 2018


    • Upgrade to latest version of concurrency kit.


    • CLIENT-1038 Return AEROSPIKE_ERR_INVALID_NODE instead of returning random node when master and prole nodes are unavailable for AP mode (now consistent with SC mode).

    • CLIENT-1040 Add descriptive error messages when node is not found in partition map.

    • Log info message when regime < old regime.

    • Remove systemtap.

  • 4.3.17
    Release Date: August 31, 2018


    • Change max bin name size to 16 (including null byte) to be consistent with new server change. Max bin name length is now 15.

  • 4.3.16
    Release Date: August 27, 2018


    • System lua code is now loaded directly from C strings instead of files.

    • Remove lua system_path config. See Incompatible API change.

    • Remove lua-core submodule.

    • Do not create aerospike user on client install.


    • Set socket_timeout to total_timeout when total_timeout > 0 and socket_timeout is zero for both sync and async commands.

    • Do not try to detect load balancer if address is localhost.

    • Update docs for aerospike_key_get(), aerospike_key_select() and aerospike_key_exists() to mention that rec pointer must be preset prior to using.

    • Remove as_record_copy().

  • 4.3.15
    Release Date: July 24, 2018


    • Support assigning tend thread to a specific cpu. See "as_config.tend_thread_cpu".

    • Add as_event_set_single_thread() to enter async single thread mode where libevent function evthread_use_pthreads() is not called.


    • Call pthread_attr_destroy() after pthread_attr_init().

    • Make "as_map_policy.flags" type uint64_t.

  • 4.3.14
    Release Date: July 6, 2018


    • CLIENT-1011 Support cluster seed that is a load balancer.

    • AER-5891 Support list/map nearest key/value get/remove operations (relative rank range). This feature requires server versions >=

    • AER-5892 Support as_list_write_flags, NO_FAIL and PARTIAL. Add as_map_write_flags which includes NO_FAIL and PARTIAL. This feature requires server versions >=

    • Add as_record_copy().

    • Allow alternate install dir (Make INSTALL_PREFIX={dir} install).


    • CLIENT-1021 Fix async connection summation in aerospike_stats(). Add node to as as_node_stats. Add aerospike_node_stats_destroy().

  • 4.3.13
    Release Date: June 14, 2018


    • CLIENT-1024 Support scan/query consistency validation using cluster key. Set fail_on_cluster_change to true in as_policy_scan/as_policy_query to enable this validation.

    • CLIENT-1021 Support aerospike cluster statistics.

    • AER-5875 Support password-protected TLS keys.

    • Client Only - Port to FreeBSD.


    • CLIENT-1023 Add macports default openssl include path in Makefile.

  • 4.3.12
    Release Date: May 15, 2018


    • Add support for Ubuntu 18.04.

    • Remove support for Ubuntu 12.04.


    • CLIENT-1008 Fix memory leak caused by redefining apr_palloc(). Rename symbols with apr prefix and make ssl_util functions static.

    • Restore ability to pass in null command to as_info_command().

    • Change default socket idle timeout for scan/query to 30 seconds.

  • 4.3.11
    Release Date: April 19, 2018


    • Support authentication mode (as_config.auth_mode). When user authentication is enabled, the mode specifies internal server authentication or external (LDAP etc) authentication.

    • Support separate login timeout (as_config.login_timeout_ms) when authentication is enabled.

    • Support TLS specifically for logins (as_config_tls.for_login_only) in addition to full TLS. If enabled, TLS will be used for login and clear sockets will be used for transactions.


    • CLIENT-1005 Send socket timeout to server for queries that do not have a filter (effectively a scan).

    • CLIENT-1006 If the user aborts scan/query or an error occurs, do not allow new scan/query for nodes that have not started yet.

    • Fix aerospike_set_password() and aerospike_change_password() by defaulting null user to cluster user before validating user length.

    • Fix travis server download.

    • Eliminate cppcheck warnings.

  • 4.3.10
    Release Date: April 6, 2018
    • If using the security feature with Aerospike Enterprise Edition Server 4.6 or later, this version is not compatible -- please upgrade to Aerospike C Client version 4.3.11 or later.


    • Fix query when one or more nodes do not have the set name.

    • Convert session token into a byte array with length. Previous null terminated session tokens would fail when a character value was zero.

  • 4.3.9
    Release Date: March 30, 2018
    • If using the security feature with Aerospike Enterprise Edition Server 4.6 or later, this version is not compatible -- please upgrade to Aerospike C Client version 4.3.11 or later.


    • OPS-2193 Enforce length limits when creating users and passwords.

    • Return zero in as_poll_socket() when a timeout occurs.

    • Cleanup memory in tests on connection failure.

  • 4.3.8
    Release Date: March 20, 2018
    • If using the security feature with Aerospike Enterprise Edition Server 4.6 or later, this version is not compatible -- please upgrade to Aerospike C Client version 4.3.11 or later.


    • Send hashed password in aerospike_change_password().

  • 4.3.7
    Release Date: March 16, 2018
    • If using the security feature with Aerospike Enterprise Edition Server 4.6 or later, this version is not compatible -- please upgrade to Aerospike C Client version 4.3.11 or later.


    • Don't double-initialize OpenSSL with XDR.

    • Allow users to enter empty passwords.

  • 4.3.6
    Release Date: March 5, 2018
    • If using the security feature with Aerospike Enterprise Edition Server 4.6 or later, this version is not compatible -- please upgrade to Aerospike C Client version 4.3.11 or later.


    • Support LDAP authentication.

    • Add new list and map operations.


    • AER-5786 OpenSSL 1.1.x doesn't need explicit initialization and installs its own atexit() handler.

    • CLIENT-990 Check for null in cf_digest_string().

    • Use correct wire protocol field order for scans with predicates.

    • Fix Alpine compilation error by adding "sys/select.h" include in "as_poll.h".

    • Add AS_ARGS to test-valgrind makefile target.

  • 4.3.5
    Release Date: February 6, 2018


    • Add async event loop configuration. as_policy_event contains max_commands_in_process and max_commands_in_queue.

    • Add async delay queue. When max_commands_in_process is reached, future async commands are stored in the delay queue for later execution. This is useful for limiting socket usage while allowing for a burst of async commands. The delay queue is not enabled by default.

    • Add async delay queue example.


    • Always set as_error in_doubt.

    • Remove enterprise requirement in truncate doc.

    • Prevent rogue node from taking ownership of a partition previously owned by legitimate strong consistency node.

    • Return immediately if async delay queue is full.

  • 4.3.3
    Release Date: January 18, 2018


    • Add in_doubt to as_error. in_doubt indicates if a write command may have completed even though an error was returned. This scenario can occur on a client timeout for a command that has been sent to the server.


    • Remove obsolete LDT error codes.

  • 4.3.2
    Release Date: January 3, 2018


    • CLIENT-968 Add IP address to timeout error messages and single record command errors returned by server. Also, distinguish between client and server timeouts.


    • CLIENT-971 Client can crash if timeout occurs before async connection has been assigned. Fix by validating async connection before closing on a timeout.

    • CLIENT-976 In as_poll_socket() (introduced in version 4.3.0), return result code from select() and not FD_ISSET().

    • Do not call as_poll_socket() when the current time is exactly equal to the deadline (remaining time is zero).

  • 4.3.1
    Release Date: December 12, 2017


    • Add as_policy_exists field to as_policy_operate.

    • Add Node.js build target on Windows that links with node.lib instead of libuv.

    • Use aerospike-client-c-dependencies Windows package version 1.0.1 (contains new pthreads version 2.10.0).

    • Create zip file of source code when packaging.


    • Return the last connection status code upon connect failure.

    • Fix windows readme with correct dependency package link.

    • Use latest version of concurrency kit.

    • Add concurrency kit casts for C++ compilers.

  • 4.3.0
    Release Date: November 30, 2017


    • Port to Windows 7+ and Visual Studio 2015+. See "vs" directory.

    • Port to Debian 9.

    • Add linearize_read policy for CP mode.

    • Change installer package layout. Release four tgz packages (sync and 3 event frameworks) for each platform. Windows has 3 nuget packages (sync and 2 event frameworks).


    • Move XCode project files from "project" to "xcode".

    • Use given deadline (instead of 60-second timeout) for TLS handshakes.

    • Disable retries by default for writes.

    • Set max_retries = 2 on operate calls when the policy is null and all operations are reads.


    • Ensure /opt/aerospike directory exists in debian post install.

    • Remove as_config_tls encrypt_only field because the server has dropped support for it.

  • 4.2.1
    Release Date: November 9, 2017


    • Add linearize_read policy for Strong Consistency mode.


    • Use given deadline (instead of 60-second timeout) for TLS handshakes.


  • 4.2.0
    Release Date: September 25, 2017


    • Policy rewrite. Move common policy variables to as_policy_base. See Incompatible API change.

    • Add socket idle timeout (socket_timeout) to as_policy_base.

    • CLIENT-890 Try different node when the current node fails.

    • Support retry in async mode.

    • Support “as_query.no_bins” option for only returning keys without bin data in query.

    • Support CDT list increment operation.

    • Support dynamic TLS config refresh.

    • Add AEROSPIKE_CLIENT_VERSION macro for current numerical version.

    • Change default libev version to 4.24.

    • Support Strong Consistency mode for servers that also support Strong Consistency mode.

    • Shared memory layout has changed. The default as_config shm_key has changed to 0xA7000000 so old client applications do not mix shared memory with new client applications. If you are using shared memory clients with a custom shm_key, it's critical that this key changes when linking with the new Aerospike client library.


    • AER-5555 Remove LDT client methods. Large data types have been deprecated on the server.

    • CLIENT-933 Client does not always revert to seeds when entire cluster is unreachable. Fix by reverting to seeds after all node info requests fail 5 consecutive times (5 seconds) regardless of cluster size.

    • CLIENT-938 Return error in aerospike_index_create() when index already exists. Also, return error in aerospike_index_remove() when index does not exist.

    • CLIENT-136 Add gen and gen_value to as_policy_apply. Support expected generation in aerospike_key_apply() and aerospike_key_apply_async().

    • Enable batch namespace/set repeat functionality by checking full equality.

    • In as_wait_till_stabilized(), replace timeout with max cluster tend iterations (3).

    • In as_cluster_find_nodes_to_remove(), search shared memory partition map when shared memory enabled.

    • Do not allow nodes into cluster until node partition maps are fully initialized (partition-generation != -1).

    • Disable threading_setup() when compiling with OpenSSL 1.1.x, because these versions does not need assistance with threads.

    • Initialize cmd->pos and cmd->len after TLS connect.

    • Cleanup doxygen comments. Expand on main page comments.

    • Fix as_monitor_wait() by obtaining lock before complete is checked. Thanks to mbotner for the fix.

  • 4.1.10
    Release Date: September 11, 2017


    • CLIENT-935 Race condition when contending for ownership of shared memory segment. Fix by only initializing variables by owner of lock. The other processes wait for lock owner to finish before accessing variables.

  • 4.1.9
    Release Date: August 17, 2017


    • CLIENT-932 C client can crash when an async batch error occurs. Fix by saving initial error and notifying user listener only after all async batch node sub-commands have completed.

  • 4.1.8
    Release Date: July 13, 2017


    • CLIENT-903 Support socket idle timeout in addition to total timeout for scan and query.

    • Support cluster event notifications for “add node”, “remove node” and “cluster disconnected” events. Set “as_config.event_callback” to receive events.

  • 4.1.7
    Release Date: June 19, 2017


    • Support OpenSSL 1.1.x.

    • Support libevent 2.1.x.

    • Add as_event_execute() to execute specified function in an event loop thread.

    • Modify installer package content. Put header files and static library into devel packages. Put lua files and dynamic shared library into runtime packages.


    • AER-5655 Idle time limit for non-TLS. Dynamic connection limit w/o cluster restart. Moved "as_config_tls.max_socket_idle" to "as_config.max_socket_idle".

    • Only set "peers.gen_changed" to true when peers protocol is supported by server.

    • Fix as_key_new api docs to correctly specify that as_key is allocated on the heap.

    • Rename benchmark command line argument asyncSelectorThreads to eventLoops.

    • Print test name instead of test index in test output.

    • Remove unused as_query orderby structure.

  • 4.1.6
    Release Date: May 19, 2017


    • Add as_cluster_add_seed() and as_cluster_remove_seed() for dynamic seed changes after cluster has been initialized.

    • Add aerospike_udf_remove_wait()


    • CLIENT-891 Propagate batch read consistency_level to sub-transactions. Add consistency_level to as_policy_batch.

    • In cluster tend, set node’s new peers generation only if all referenced peers are added to the cluster.

    • Added missing parameter to as_predexp_rec_digest_modulo declaration.

    • Stop in aerospike_info_foreach() and aerospike_job_info() when an error is returned from any of the nodes.

    • Fix as_record_rec_remove() and as_rec_remove() return code.

    • Handle write event during TLS negotiation.

  • 4.1.5
    Release Date: April 4, 2017


    • CLIENT-865 Add predicate expression function as_predexp_rec_digest_modulo().

    • CLIENT-866 Support configurable scan socket write timeout on server side (as_policy_scan.socket_timeout).

    • Add remote IP address and local port to socket error messages.


    • Fix leak in as_batch_read_execute_async() when async batch size exceeds initial capacity. Thanks to tang0on for the fix!

    • Detect and prevent async recursive error death spiral. Used to occur in benchmarks when async command fails prior to registration with event loop. The next command is recursively added and fails again. This could possibly repeat until the stack is exhausted.

    • CLIENT-878 Fix node reconnect failure after cluster-wide restart.

    • Count successful transactions (not attempts) in benchmarks total field when in insert sequential mode.

    • Add /usr/local/include path to xcode benchmarks project.

  • 4.1.4
    Release Date: March 15, 2017


    • Support query filtering with predicate expressions. Requires Aerospike Server versions >= 3.12.

    • Add aerospike_truncate() which efficiently deletes namespace/set. Requires Aerospike Server versions >= 3.12.

    • Support multiple connection pools per node to reduce contention on machines with large number of cpu cores.

    • Run query in current thread if thread pool size == 0.

    • Make benchmark keys type uint64_t to support larger key ranges.


    • AER-5509 Close the connection on AEROSPIKE_NOT_AUTHENTICATED error.

    • Disallow SSLV3 when OPENSSL_NO_SSL3_METHOD is defined.

    • Check for malloc failure in as_command_parse_bins() and process possible new error in calling functions.

    • If record pointer is not null, aerospike_key_get() now correctly uses the existing record to return data. If record pointer is null, aerospike_key_get() creates new record to return data.

    • Errors are not considered done in aerospike_index_create_is_done().

    • Add cf_byte_order.h to public header files.

    • Modify Xcode projects so they can be used by multiple macOS and Xcode versions.

    • Add /usr/local/opt/openssl/lib to library search path when on macOS.

  • 4.1.3
    Release Date: January 6, 2017


    • Support libevent async framework. Thanks Ky!

    • Mark LDT functionality as deprecated.


    • Reduce SSL_get_error() lock contention in sync mode.

    • Use light-weight max_socket_idle to validate TLS sockets retrieved from connection pools.

    • Rename TLS chainfile to certfile.

    • CLIENT-911 Client can crash on a race condition when calling aerospike_close(). Fix by calling thread pool "fini_fn" before signaling thread completion.

    • Do not use event library by default in mac project.

  • 4.1.2
    Release Date: November 18, 2016


    • Support TLS in benchmarks.

    • Support key range in benchmarks.

    • Support durable delete in benchmarks.

    • Add as_event_destroy_loops(). This function can be called when external event loops are used and it's desirable to free the global event loop array.

    • Add as_config_tls_add_host().


    • AER-5315 convert null values to as_nil values on insertion into as_arraylist and as_hashmap.

    • Put parenthesis around macro arguments.

    • Deprecate aerospike_info_host(). Use either aerospike_info_node() or aerospike_info_any() instead.

    • Do not allow seed hosts/ip_maps to be modified after a cluster has been initialized. Cluster must be closed/reopened to change these settings.

    • Make TLS command line arguments the same for benchmarks, examples and test.

    • On reentering the async client, don't use connections that are in the process of being cancelled.

    • Allow cancelled, pooled pipeline connection to be closed.

    • Avoid race between tend thread startup and cluster version increment.

    • Add manage_sigpipe() to remove TLS SIGPIPE crash when server goes away.

    • Reduce OpenSSL lock contention by avoiding as_tls_peek().

    • Fix travis aerospike.conf.

  • 4.1.1
    Release Date: October 4, 2016


    • Port to Alpine Linux. Compile/Execution works, but packaging is not supported.


    • Allow config hosts and strings to be reset in case client cluster needs to be restarted.

    • Do not share config pointers between as_config and as_cluster. Exception is ip_map which is managed by user for legacy reasons.

    • Make as_config_destroy() a private function. Call as_config_destroy() from aerospike_destroy().

    • Add setters for TLS config.

    • Rename cluster_id to cluster_name to be consistent with server.

    • Return -errno when socket fd create fails.

    • Fix double free when socket fd create fails (introduced in previous release).

    • Give callback to uv_close() when walking remaining async connections.

    • Handle case where multiple nodes go down simultaneously, but still protect against split brain rogue node.

    • Free response string if socket read fails in as_info_command().

    • In benchmark utility, enforce max throughput option (-g) during pure insert.

  • 4.1.0
    Release Date: September 1, 2016


    • Support TLS 1.2 secure socket protocol. Dependent on future Aerospike Server release.

    • Support IPv6 socket protocol. Dependent on future Aerospike Server release.

    • Support cluster-id verification. Dependent on future Aerospike Server release.

    • Support new peers info protocol. Dependent on future Aerospike Server release.

    • Support sleep_between_retries and retry_on_timeout policy fields.

    • Support AS_POLICY_REPLICA_SEQUENCE for synchronous single record reads.

    • Add aerospike_info_node().

    • Shared memory layout has changed. The default as_config shm_key has changed to 0xA6000000 so old client applications do not mix shared memory with new client applications. If you are using shared memory clients with a custom shm_key, it's critical that this key changes when linking with the new Aerospike client library.


    • Set minimum cluster tend interval to 250ms.

    • Expose cf_ll.h.

    • Add casts in as_async.h to facilitate C++ compiles.

  • 4.0.7
    Release Date: July 27, 2016


    • Support durable deletes on client side. Requires future release of Aerospike Server Enterprise Edition.

    • Use circular linked list for round-robin assignment of async commands to event loops.

    • Enhance benchmarks to write and delete multiple bins.


    • Always queue async event loop close command instead of calling close directly. This is done to prevent close from being executed before previously queued commands.

    • Wrap macro if in do ... while(0). Fix provided by XeCycle.

    • Do not peek for map extension type when map is empty.

  • 4.0.6
    Release Date: June 28, 2016


    • Support Ubuntu 16.04.


    • Ensure that async scans complete when no data exists for a namespace/set filter on a server node.

  • 4.0.5
    Release Date: June 1, 2016


    • Support new server map operations. Requires Aerospike Server versions 3.8.4 and above.

    • Add aerospike_has_pipelining().


    • AER-5032 Don't leave a closed FD in node->info_fd.

    • CLIENT-718 Don't check for stop-writes in benchmarks because it can cause benchmarks to shutdown when checking a temporarily downed node.

    • CLIENT-721 Use cluster->ip_map to transform seed addresses in addition to friend node addresses.

    • TOOLS-620 Rename error message "Failed to seed cluster" to "Failed to connect".

    • Fix shared memory issue when a client process takes over cluster tending from a previous client that had crashed.

    • Check for buffer overflow when constructing index info commands.

  • 4.0.4
    Release Date: March 25, 2016


    • Use reference counting to determine when to close cluster if there are pending async commands.

    • Add as_async_get_cluster_count().

    • Add usage blurb for unit test program.


    • Remove "-march=nocona" flag when compiling on PowerPC. Thanks mlpesant!

    • Set libuv wakeup->data to event loop for externally created event loops.

    • Ensure all stray open handles are closed when shutting down libuv event loop.

  • 4.0.3
    Release Date: March 15, 2016


    • CLIENT-616 Rename as_config "max_threads" to "max_conns_per_node". See Incompatible API change.

    • CLIENT-616 Enforce max_conns_per_node as a hard limit.

    • CLIENT-616 Return AEROSPIKE_ERR_NO_MORE_CONNECTIONS if this limit would be exceeded.

    • CLIENT-665 Use "replicas-all" in cluster tend when the server node supports it.

    • CLIENT-676 Support "make install".

    • Use xorshift128+ to generate random values.

    • Support signing of OS X packages. This will only work for Aerospike employees that have the proper installed certificate.

    • Organize mac project files.

    • Add suite and test filters to testing framework.


    • Respect as_policy_operate deserialize (for list operations) in aerospike_key_operate_async().

    • Add aerospike_init_lua() for global lua initialization. Document that "as_config.lua" is really a global config that is located in the wrong place and not to use it anymore. To preserve backwards compatibility, call aerospike_init_lua() from aerospike_connect() only once on first cluster connect.

    • Add as_config_lua_init() so lua system defaults can be retrieved.

    • Fix dubious code identified by "cppcheck". Thanks tigran-a!

    • Fix lua "bytes.tostring()" memory leak. Thanks tivvit!

    • Mark the source arg to as_error_copy as const. Thanks sgolemon!

  • 4.0.2
    Release Date: February 23, 2016


    • Abort async command in libuv callbacks if connection is closing. This prevents the command from being processed after a timeout has freed command data.

    • Handle async batch case where one node returns an error and the next node returns a valid response.

    • Perform bounds check on returned batch index.

    • Fix memory leak in as_operations_new(). Thanks ramrengaswamy for the pull request!

    • CLIENT-671 Add logging of ip/port of node in case of errors.

    • Invalidate the key digest after updating the integer key in benchmarks.

    • Enable CDT and secondary index query tests.

  • 4.0.1
    Release Date: February 5, 2016


    • CLIENT-629 Support "services-alternate" info request during cluster tend.


    • Change all async pipeline methods to include pipeline callback argument to instead of a pipeline boolean. See Incompatible API change .

    • Enforce max async connections hard limit at node/event loop queue level.

    • Close async event loop directly if current thread is event loop thread.

    • Force link error if program calls event loop initialization without defining event library in make.

    • Fix "use after free" condition by returning enum from as_event_get_connection().

    • Move ip_map internal/external IP conversion to parse "services" so DNS lookup is not performed on every cluster tend.

    • Return error if operate does not have any operations.

    • Initialize fixed values in benchmarks.

    • In as_event_create_loop(), wait until uv_async_init() is called in event loop thread before returning. Removed old event loop initialized logic.

    • CLIENT-590 Pass in set name for batch reads when batch policy send_set_name is true.

  • 4.0.0
    Release Date: January 14, 2016


    • Support asynchronous operations using either libev or libuv framework.

    • Support Redhat 7, Ubuntu 14.04 and Debian 8 distributions.

    • CLIENT-629 Provided a policy to use services-alternate to avoid internal/external IP mapping.


    • CLIENT-638 Attempt socket retry if interrupted by a signal. Call aerospike_stop_on_interrupt() if socket retry is not desired.

    • Since openssl is not bundled with OS X 10.11 El Capitan, added ability to resolve openssl installed via brew.

    • Fixed memory stomp in unit test framework.