C Client Library Release Notes

  • 4.6.8
    Release Date: October 1, 2019

    Features

    • 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.

    Fixes

    • 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

    Features

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

    Fixes

    • 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

    Features

    • 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().

    Fixes

    • 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

    Features

    • 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().

    Fixes

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

  • 4.6.4
    Release Date: July 24, 2019

    Features

    • 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.

    Fixes

    • 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

    Features

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

    Fixes

    • 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

    Fixes

    • 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

    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

    Fixes

    • 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.

  • 4.6.0
    Release Date: March 28, 2019

    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

    Features

    • 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.

    Fixes

    • 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.

  • 4.5.0
    Release Date: February 19, 2019

    Features

    • 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.

    Fixes

    • 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

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Fixes

    • 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

    Features

    • Upgrade to latest version of concurrency kit.

    Fixes

    • 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

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • Call pthread_attr_destroy() after pthread_attr_init().

    • Make "as_map_policy.flags" type uint64_t.

  • 4.3.14
    Release Date: July 6, 2018

    Features

    • 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 >= 4.3.0.0.

    • 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 >= 4.3.0.0.

    • Add as_record_copy().

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

    Fixes

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

  • 4.3.13
    Release Date: June 14, 2018

    Features

    • 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.

    Fixes

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

  • 4.3.12
    Release Date: May 15, 2018

    Features

    • Add support for Ubuntu 18.04.

    • Remove support for Ubuntu 12.04.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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.

    Fixes

    • 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.

    Fixes

    • 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.

    Fixes

    • 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.

    Fixes

    • 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.

    Features

    • Support LDAP authentication.

    • Add new list and map operations.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • Remove obsolete LDT error codes.

  • 4.3.2
    Release Date: January 3, 2018

    Features

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

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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).

    Fixes

    • 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.

    • Reuse error code AEROSPIKE_ERR_NO_XDR for AEROSPIKE_ERR_ALWAYS_FORBIDDEN.

    • 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

    Features

    • Add linearize_read policy for Strong Consistency mode.

    Fixes

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

    • Reuse error code AEROSPIKE_ERR_NO_XDR for AEROSPIKE_ERR_ALWAYS_FORBIDDEN.

  • 4.2.0
    Release Date: September 25, 2017

    Features

    • 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.

    Fixes

    • 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

    Fixes

    • 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

    Fixes

    • 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

    Features

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

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

    • Add aerospike_udf_remove_wait()

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • Support libevent async framework. Thanks Ky!

    • Mark LDT functionality as deprecated.

    Fixes

    • 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

    Features

    • 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().

    Fixes

    • 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

    Features

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

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • Support Ubuntu 16.04.

    Fixes

    • 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

    Features

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

    • Add aerospike_has_pipelining().

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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

    Features

    • 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 Mac 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.

    Fixes

    • 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

    Fixes

    • 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

    Features

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

    Fixes

    • 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

    Features

    • 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.

    Fixes

    • 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 Mac OS X El Capitan, added ability to resolve openssl installed via brew.

    • Fixed memory stomp in unit test framework.