C Client Library Release Notes

  • 6.6.4
    Release Date: September 17, 2024

    Fixes

    • CLIENT-3117 Replace an existing node in the cluster when a new peer has the same node name, but a different IP address. The existing node must also have recent cluster tend failures and not be a localhost IP address (127.0.0.1) for the node replacement to proceed.

    • CLIENT-3114 Support both old and new (introduced in server 7.2) error response formats in aerospike_udf_put().

    • CLIENT-3098 Add AEROSPIKE_XDR_KEY_BUSY status code.

    • Add libz-devel requirement for CentOS in README.md.

  • 6.6.3
    Release Date: June 25, 2024

    Fixes

    • CLIENT-2972 Allow scan to work in a mixed cluster of server 5.7 and 6.4 nodes.

    • CLIENT-2979 Fix minor warning identified by xcode about requiring void declaration for functions with no arguments.

    • CLIENT-3002 Change as_policy_read_mode_sc doc from server to client perspective.

    • CLIENT-3010 Update C apidocs with new Aerospike logo.

  • 6.6.2
    Release Date: May 23, 2024

    Features

    • CLIENT-2931 Support Ubuntu 24.04.

    Fixes

    • CLIENT-2963 Fix async TLS pending buffer calculation in as_uv_tls_try_send_pending().

    • CLIENT-2929 Add README.md to nuspec packages.

  • 6.6.1
    Release Date: May 7, 2024

    Fixes

    • CLIENT-2842/CLIENT-2900 Use default batch policies in as_policies when the record level batch policy is NULL.

    • Make as_address_name() and as_address_short_name() public in Windows by adding AS_EXTERN prefix.

  • 6.6.0
    Release Date: March 21, 2024

    Features

    • CLIENT-2699 Support client metrics.

    • CLIENT-2809 Add as_exp_bit_add_signed() and as_exp_bit_subtract_signed() to support bitwise add/subtract expressions with signed bits.

    • CLIENT-2816 Support as_query_duration enum in as_policy_query. The AS_QUERY_DURATION_LONG_RELAX_AP enum value requires server version 7.1+.

    • CLIENT-2817 Support read_touch_ttl_percent in as_policy_read, as_policy_operate, as_policy_batch and as_policy_batch_read. This feature requires server version 7.1+.

    Fixes

    • CLIENT-2801 Restrict map keys to integer, string, and byte array.

    • CLIENT-2809 Change value argument type from int64_t to uint64_t in as_operations_bit_add() and as_operations_bit_subtract() to be consistent with the server handling of these values.

    • CLIENT-2786 Update map key doc to say that only as_string, as_integer and as_bytes types are allowed as map keys.

    • Add "@relates aerospike" to aerospike_init_lua() doc to be consistent with other functions in aerospike.h.

    • Use clearer doc description for AS_BIT_WRITE_PARTIAL.

    • Update as_exp_cond() doc to say that all action expressions must return the same type, with the exception being as_exp_unknown().

  • 6.5.2
    Release Date: February 5, 2024

    Features

    • CLIENT-2764 Support persistent list indexes. Add as_operations_list_create_all().

    • CLIENT-2743 Upgrade to doxygen 1.10.0. Use new doxygen document format.

    Fixes

    • CLIENT-2775 Do not use batch repeat flag on batch writes when key policy is AS_POLICY_KEY_SEND.

    • Update as_operations_add_incr()/as_operations_add_incr_double() docs to mention that the record/bin will be created by default when the record/bin does not already exist.

    • Update doc for as_exp_is_tombstone().

  • 6.5.1
    Release Date: January 4, 2024

    Fixes

    • CLIENT-2647 Support default ttl in as_policy_write, as_policy_batch_write, as_policy_operate and as_policy_scan. If "as_record.ttl", "as_operations.ttl", "as_scan.ttl" or "as_query.ttl" is AS_RECORD_CLIENT_DEFAULT_TTL, the corresponding default client policy ttl will be used.

    • CLIENT-2706 In scan/query with max_records set, mark node's partitions for retry on next scan/query page when that node returns records that are discarded due to exceeding max_records.

    • CLIENT-2729 Use as_event_loop_size instead of as_event_loop_capacity to check if async commands are enabled. This fixes a memory leak that was caused when event_loops were created and closed and then aerospike_close() was called afterwards.

    • CLIENT-2720 Include all partition unavailable errors in the scan/query sub-error list.

  • 6.5.0
    Release Date: October 24, 2023

    Features

    • CLIENT-2467 Add castring, keystring and certstring fields to as_config_tls. These fields allow certificates to be loaded from a string instead of a file (cafile, keyfile and certfile).

    • CLIENT-2570 Support as_exp_record_size(). This feature requires server version 7.0+.

    • CLIENT-2585 Support secondary index on a blob. This feature requires server version 7.0+.

    • CLIENT-2598 Support persistent map indexes. This feature requires server version 7.0+.

    • CLIENT-2605 Upgrade UDF module to Lua 5.4 to be consistent with server version 7.0+.

    • CLIENT-2605 Remove Lua 5.1 from the Windows aerospike-client-c-dependencies package.

    • CLIENT-2605 Build the lua submodule directly in Visual Studio, instead of relying on aerospike-client-c-dependencies package.

    • CLIENT-2605 Remove luajit submodule.

    • CLIENT-2605 Support parallel make (make -j).

    • CLIENT-2605 Drop support for Centos/RHEL 7.

    • CLIENT-2605 Drop support for Debian 10.

    Fixes

    • CLIENT-2485 Add rtype argument to relevant as_exp_map_remove_by and as_exp_list_remove_by macros. Valid rtype for as_exp_map_remove_by macros are AS_MAP_RETURN_NONE or AS_MAP_RETURN_INVERTED. Valid rtype for as_exp_list_remove_by macros are AS_LIST_RETURN_NONE or AS_LIST_RETURN_INVERTED. See Incompatible API change.

    • CLIENT-2528 On scan/query where max_retries is reached and there are no stored errors, return AEROSPIKE_ERR_CLUSTER (ie some partition(s) are unavailable) because that is the only retryable error that does not result in stored errors.

    • CLIENT-2440 Document valid map key types (as_string, as_integer, as_bytes, as_list).

    • CLIENT-2558 Set in_doubt in sync commands when AEROSPIKE_ERR_INVALID_NODE is returned.

    • CLIENT-2579 Allow read-only operations in aerospike_batch_operate().

    • Mention minimum openssl library version (1.0.2) in readme.

    • Update docs for as_error_update() and as_error_set_message().

    • Add tests to query a CDT ctx containing a string.

    • Adjust query_foreach tests to be compatible with upcoming server version 7.0.

  • 6.4.4
    Release Date: August 1, 2023

    Features

    • CLIENT-2380 Add expression base64 conversion functions as_exp_to_base64() and as_exp_from_base64().

    • CLIENT-2391 Add support for Debian 12.

    Fixes

    • CLIENT-2344 Reserve each node when cluster node array is created. Release each node when cluster node array is destroyed. This eliminates the need for the user to reserve each node individually after reserving the node array. Now, as_nodes_reserve() / as_nodes_release() is all that is required when traversing each node in a node array.

    • CLIENT-2448 Initialize in_doubt to false when creating an error message. Single record write commands will set in_doubt after the error is created. Also, remove unused function as_error_set().

    • CLIENT-1308 Check for "recs-succeeded" when running the "query-show" info command. This will result in the "as_job_info.records_read" field being populated on an aerospike_job_info() call.

    • Use libevent 2.1.12-stable in install_libevent script.

    • Remove Replica doc sentence that said "Scan and query are not affected by this replica algorithm." as that is no longer true.

  • 6.4.3
    Release Date: June 22, 2023

    Fixes

    • Fix common submodule's ssl_util linking issue on centos 7 that was introduced in the previous release.

  • 6.4.2
    Release Date: June 21, 2023

    Features

    • CLIENT-2367 Add as_exp_inf() and as_exp_wildcard().

    Fixes

    • CLIENT-2334 Retry all commands on AEROSPIKE_ERR_CLUSTER. Also, retry scan/query on AEROSPIKE_ERR_INVALID_NODE.

    • CLIENT-2346 Upgrade to latest luajit submodule that no longer needs to generate luaconf.h

    • Remove doc sentences that said "restricted to master and one prole" because that is no longer true. Replication factor 3 is now supported.

  • 6.4.1
    Release Date: May 18, 2023

    Features

    • CLIENT-2073 Support read replica policy in scan/query. This includes AS_POLICY_REPLICA_PREFER_RACK which allows scan/query to be directed at local rack nodes when possible.

    • CLIENT-2327 Add as_scan_from_bytes_new() and as_query_from_bytes_new().

    • CLIENT-2302 Add support for Amazon Linux 2023.

    • CLIENT-2208 Drop support for Ubuntu 18.04.

    • CLIENT-2325 Set minimum Windows OS version to 10.

    • CLIENT-2325 Set minimum Visual Studio version to 2022.

    • Add async scan page and async scan terminate/resume examples.

    Fixes

    • CLIENT-2332 Fix memory leak when async scan node commands are run in sequence and an error occurs. The async scan executor is now freed when node complete count equals queued count (not max node commands).

    • CLIENT-2329 Handle case when scan/query max_records is defined and less than the number of assigned nodes. In this scenario, the scan/query previously could consistently return 0 records even when some records are still available in nodes that were not included in the max_record distribution.

    • CLIENT-2299 Only run ttl tests when the server configuration supports ttl.

    • Restore luaconf.h generation in standard lua module.

    • Cleanup scan/query docs. Add callback code examples.

  • 6.4.0
    Release Date: April 12, 2023

    Features

    • CLIENT-2222 Allow replication factor 3 in client partition maps. Reimplement regular and shared memory partition map lookup. Switch master/prole bool with replica_size and replica_index into new replicas array.

    • CLIENT-2222 Shared memory layout has changed. The default as_config shm_key has changed to 0xA9000000 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.

    • CLIENT-2242 Support scan/query serialization/deserialization.

    • CLIENT-2182 Add ordered map equality expression test.

    • CLIENT-2291 Add debug log message with parent_id, task_id and iteration whenever a partition scan/query iteration is run.

    Fixes

    • Only attempt to remove shared memory segment if there are no more attached processes.

    • Fixed failure path memory leak in as_orderedmap.

    • CLIENT-2280 Set correct return types in list/map read expressions.

    • CLIENT-2280 Set bool return type for list read expressions with AS_LIST_RETURN_EXISTS.

    • CLIENT-2280 Set bool return type for map read expressions with AS_MAP_RETURN_EXISTS.

    • CLIENT-2280 Set map return type for map read expressions with AS_MAP_RETURN_UNORDERED_MAP or AS_MAP_RETURN_ORDERED_MAP.

    • Adjust geospatial test to expect less duplicate records due to server 6.3 query enhancements.

    • In as_exp_hll_may_contain(), change "contains" to "may contain".

    • Declare as_val_cmp() and as_info_parse_single_response() with AS_EXTERN.

    • Make all common aerospike header files public.

  • 6.3.1
    Release Date: February 8, 2023

    Features

    • CLIENT-1963 Support RedHat 9.

    • CLIENT-2142 Support AS_MAP_RETURN_ORDERED_MAP and AS_MAP_RETURN_UNORDERED_MAP return types in map operations. This feature requires server version 6.3+.

    • Add tests to compare maps and lists. This feature requires server version 6.3+.

    Fixes

    • CLIENT-2002 Check for error in the info command response string when parsing racks and partitions.

    • CLIENT-2143 Return last error code received when scan/query max_retries is exceeded.

    • Replace yield instruction with isb on ARM. The yield instruction is treated as a nop on ARM processors which is very different than the x86 pause instruction that stalls execution for ~40 cycles. The "isb" instruction serializes the pipeline and has been shown to be roughly analogous to the pause delays and is used in other databases for spinloops where not hammering the cache line is important.

    • Return AEROSPIKE_ERR_NAMESPACE_NOT_FOUND (instead of AEROSPIKE_ERR_CLIENT) when the client cannot find the specified namespace.

    • Mention that "as_config.cluster_name" must match the server config "cluster-name" in the service section.

    • Remove comment about support for "cluster-name" info command because all recent servers support it.

    • Change "as_policy_query.short_query" doc to say "less than 100 records per node".

    • Change as_policy_gen doc descriptions to be identical to java client GenerationPolicy doc descriptions.

    • Remove "C" icon from data structures api doc page.

  • 6.3.0
    Release Date: November 15, 2022

    Features

    • CLIENT-1821 Support ARM64 platforms including macOS M1 and Linux Graviton.

    • CLIENT-1844 Drop support for debian 9.

    Fixes

    • CLIENT-1842 Return error when a read operation is used in a background query.

    • CLIENT-1932 Retry a foreground scan/query partition to a different replica when a partition unavailable error occurs.

  • 6.2.1
    Release Date: September 27, 2022
    • Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.

    Fixes

    • CLIENT-1784 Convert thread pool detached threads into regular threads. Detached threads were causing memory retention issues when the thread pool is repeatedly opened/closed. One thread pool is created in aerospike_connect() and closed in aerospike_close().

    • CLIENT-1784 Prevent double destroy in as_thread_pool_destroy().

  • 6.2.0
    Release Date: September 8, 2022
    • Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.

    Features

    • CLIENT-1814 Change AS_POLICY_REPLICA_ANY to behave like AS_POLICY_REPLICA_SEQUENCE on retry for batch and single record commands.

    • CLIENT-1806 Add functions for CDT context conversion to/from bytes/base64 encoded string.

    • Add async batch exists example.

    Fixes

    • CLIENT-1807 Fix crash when serializing large maps that exceed pre-allocated buffer capacity.

    • CLIENT-1809 Return error in as_command_bin_size() when list/map serialization fails. Handle these errors in calling functions.

    • CLIENT-1820 Enhance as_orderedmap to improve building very large maps when inserting entries in arbitrary key order.

    • Increase buffer size to 4096 in aerospike_index_create_ctx().

    • In aerospike_index, rename position to bin_name and rename name to index_name.

  • 6.1.2
    Release Date: August 11, 2022
    • Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.

    Fixes

    • CLIENT-1797 Restore ability to write a bin with an empty bin name (which was inadvertently disabled in 6.1.0) and add test for it. This feature is only recommended when the server is configured for single-bin mode.

    • DOCS-633 Add constraint "index_bit_count + mh_bit_count must be <= 64" to HLL api docs.

  • 6.1.1
    Release Date: July 27, 2022
    • Debian 9 Stretch LTS has reached its End of Life on June 30 2022. We will drop support for Debian 9 in an upcoming client release.

    Features

    • CLIENT-1780 Support creating an secondary index on elements within a CDT using context. This feature requires server version 6.1+.

    • Support CodeQL github action.

    Fixes

    • Fix warnings generated by the latest gcc compiler on ubuntu 22.04.

    • Fix doxygen warnings in as_orderedmap.h.

  • 6.1.0
    Release Date: June 24, 2022

    Features

    • CLIENT-1686 Add new as_orderedmap implementation.

    • CLIENT-1686 Define as_hashmap functions to forward to as_orderedmap functions. The api is preserved and all maps are now effectively sorted.

    • CLIENT-1733 Add AS_LIST_RETURN_EXISTS and AS_MAP_RETURN_EXISTS.

    • CLIENT-1765 Add as_operations_add_read_all() to read all bins in a record.

    • CLIENT-1772 Change client configuration defaults.

    • CLIENT-1772 Set max_conns_per_node default from 300 to 100.

    • CLIENT-1772 Set async_max_conns_per_node default from 300 to 100.

    • CLIENT-1772 Set max_socket_idle default from 55 to 0 sec.

    • CLIENT-1772 Set max_error_rate default from 0 to 100.

    • Add support for Ubuntu 22.04.

    • Set minimum libuv version to 1.15.

    • Set minimum libevent version to 2.1.8.

    Fixes

    • CLIENT-1761 Fix hang in aerospike_index_create_wait() when a persistent error occurs while querying for index completion status.

    • CLIENT-1761 Add socket_timeout and total_timeout to as_index_task.

    • Modified query tests to not expect duplicate records as server 6.1+ partially de-dups query responses.

    • Only set "-march=nocona" compile option when arch is x86_64.

  • 6.0.2
    Release Date: May 20, 2022

    Fixes

    • CLIENT-1744 Fix crash when as_config async_min_conns_per_node > 0.

    • CLIENT-1720 Set new flag bit on batch commands to instruct the server to return the key specific error code on an error that stops a response.

    • Clarify how record and ops fields are used in batch writes in docs.

  • 6.0.1
    Release Date: April 28, 2022

    Fixes

    • CLIENT-1697 In as_batch_keys_execute(), set "as_error.code" correctly when an error occurs.

    • CLIENT-1704 Fail on startup if the seed node is valid, but all seed node peers are not reachable and fail_if_not_connected is true. This scenario occurs in AWS installations when peer nodes are configured with AWS internal IP addresses and the client is external to AWS.

    • Fix compile error when using openssl 3.0 library.

  • 6.0.0
    Release Date: March 31, 2022

    Features

    • CLIENT-1654 Support partition query. This feature requires server version 6.0+.

    • CLIENT-1653 Support batch write, batch UDF apply and batch remove. This feature requires server version 6.0+.

    • CLIENT-1652 Support udf-admin, sindex-admin and truncate privileges. This feature requires server version 6.0+.

    • CLIENT-1677 Remove old deprecated as_predexp. See Incompatible API change.

    • CLIENT-1684 Assign names to internal threads.

    • Support Debian 11. Drop support for Debian 8.

    • Set minimum Visual Studio version to 2017.

    Fixes

    • CLIENT-1682 Use separate bool to indicate cluster is closed instead of setting commands "pending" integer to a fixed value.

    • CLIENT-1685 Wait for all eventloops to finish balancing connections in the cluster tend. This avoids the scenario where the cluster tend thread is shutdown and the cluster is destroyed before the balancer’s eventloop callbacks are processed.

    • CLIENT-1688 Add scan/query partition errors from multiple threads under lock.

  • 5.2.8
    Release Date: March 3, 2022

    Features

    • CLIENT-1676 Support ttl in background scan/query.

    • Use SHA1 and RIPEMD160 implementation that is independent of openssl.

    • Use wyhash for mod-lua cache.

    Fixes

    • Fix thread safety issue on shutdown.

    • Add EXT_CFLAGS environment variable to CFLAGS when compiling examples.

  • 5.2.7
    Release Date: January 7, 2022

    Fixes

    • CLIENT-1650 Fix crash in as_node_ensure_login_shm() when shared memory and user authentication are enabled and a server rolling upgrade is performed.

    • CLIENT-1650 Set cluster n_partitions to 4096 to fix scans when shared memory is enabled and the client process is following (but not performing) the cluster tend.

  • 5.2.6
    Release Date: December 7, 2021

    Features

    • Add as_exp_expr() to merge precompiled expressions into a greater expression.

    • Remove old deprecated predexp tests.

    • Remove unused cf_queue_priority.

    Fixes

    • CLIENT-1637 Continue processing scans when "partition unavailable" errors occur. "partition unavailable" is not a fatal error for partition scans and the server will continue sending back results for other partitions. Previous clients aborted the scan and put the connection back into the pool which might cause unprocessed results to be sent to a different transaction.

  • 5.2.5
    Release Date: October 5, 2021
    • A bug affecting this version of the C client has been identified. If your application uses scans, we strongly recommend that you upgrade to C client 5.2.6 at the earliest opportunity.

    Features

    • Add as_scan_set_partitions(), as_partition_filter_set_partitions(), as_partitions_status_reserve() and as_partitions_status_release().

    • Add scan terminate/resume example.

    Fixes

    • CLIENT-1610 Fix scan's duplicate task_id errors after socket timeout by setting max_retries to zero for each scan node command. This defers the retry logic to the partition tracker which resets task_id on the next scan retry pass.

    • CLIENT-1611 Set partition's last digest received only after the scan callback function returns true. If the scan callback returns false, the last digest will not be set and that record will be returned again if the scan is resumed at a later time.

    • Set scan parts_all->done = true if max_records policy not set (ie read all applicable records).

  • 5.2.4
    Release Date: September 29, 2021
    • A bug affecting this version of the C client has been identified. If your application uses scans, we strongly recommend that you upgrade to C client 5.2.6 at the earliest opportunity.

    Features

    • Add as_operations_add_write_bool().

    Fixes

    • CLIENT-1598 Reduce max concurrent connection requests to 20 (from 50) for all event loops when creating min connections on node creation.

    • CLIENT-1598 Reduce max concurrent connection requests to 1 (from 5) when periodically balancing min connections after node timeouts.

    • CLIENT-1604 Return consistent as_partitions_status when scan fails.

    • Restore ubuntu version ".04" suffix in platform script.

  • 5.2.3
    Release Date: August 27, 2021
    • A bug affecting this version of the C client has been identified. If your application uses scans, we strongly recommend that you upgrade to C client 5.2.6 at the earliest opportunity.

    Features

    • CLIENT-1557 Support a list of preferred racks rather than a single rack when replica is AS_POLICY_REPLICA_PREFER_RACK.

    • CLIENT-1569 Support PKI authentication where the TLS certificate's common name (CN) specifies the Aerospike user name. This feature requires server version 5.7+.

    • CLIENT-1571 Support batch read operations.

    • CLIENT-1572 Support scan-show and query-show info commands.

    Fixes

    • CLIENT-1573 Refresh and add all new peers nodes until no more peers are available in cluster tend.

    • CLIENT-1573 Set node rebalance_changed to cluster rack_aware when creating node.

    • CLIENT-1575 Force login when creating a new cluster tend connection and user authentication is enabled and the session is null.

  • 5.2.2
    Release Date: July 26, 2021
    • A bug affecting this version of the C client has been identified. If your application uses scans, we strongly recommend that you upgrade to C client 5.2.6 at the earliest opportunity.

    Features

    • CLIENT-1567 Add seed and peer nodes at the same time on startup. Refresh peers of new nodes in same cluster tend iteration.

    • Use github actions to run unit tests on push and pull requests. Remove travis.

    • Build on rhel 8 instead of centos 8 when creating rpm packages.

    Fixes

    • CLIENT-1559 Do not wait for async connector completion when async_min_conns_per_node > 0 and connector is already running in an event loop thread. This is done to prevent deadlock.

    • For scan error AEROSPIKE_ERR_MAX_RETRIES_EXCEEDED, include all retry sub-errors in error message.

    • Convert prefix rhel to el in platform script.

  • 5.2.1
    Release Date: June 15, 2021
    • A bug affecting this version of the C client has been identified. If your application uses scans, we strongly recommend that you upgrade to C client 5.2.6 at the earliest opportunity.

    Features

    • CLIENT-1377 Reject command when assigned node's error rate exceeds as_config.max_error_rate. The node's error count is incremented on any error that causes the connection to close (socket errors and client timeouts) plus AEROSPIKE_ERR_DEVICE_OVERLOAD and server timeouts. Attempt retry before returning error code AEROSPIKE_MAX_ERROR_RATE.

    • CLIENT-1454 Support scan pagination. Enable by calling as_scan_set_paginate().

    • CLIENT-1540 Support placing as_record instance on heap before calling as_async_record_listener. Enable by setting async_heap_rec to true in as_policy_read or as_policy_operate. If enabled, the user is responsible for called as_record_destroy() when done with the record.

    Fixes

    • CLIENT-1494 Detect quick node restart when restarted node never left the cluster. If detected, rebalance connections.

    • CLIENT-1544 Only perform one cluster tend in as_wait_till_stabilized() because the tend now requests partition maps in same iteration as adding the nodes.

    • CLIENT-1544 Only attempt to contact an invalid node (referenced by seeds or peers) once for each cluster tend iteration.

    • CLIENT-1544 Add "as_cluster.invalid_node_count". invalid_node_count is the count of add node failures in the most recent cluster tend iteration.

    • DOCS-217 Fix REVERSE_RANK doc to say "Return reverse value order."

  • 5.2.0
    Release Date: April 30, 2021
    • A bug affecting this version of the C client has been identified. If your application uses scans, we strongly recommend that you upgrade to C client 5.2.6 at the earliest opportunity.

    Features

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

    Fixes

    • 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
    • A bug affecting this version of the C client has been identified. If your application uses scans, but does not use as_scan.priority , as_scan.percent or as_policy_scan.fail_on_cluster_change, you can safely upgrade to C client 5.2.6. We strongly recommend that you do so at the earliest opportunity.

    Features

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

    Fixes

    • 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
    • A bug affecting this version of the C client has been identified. If your application uses scans, but does not use as_scan.priority , as_scan.percent or as_policy_scan.fail_on_cluster_change, you can safely upgrade to C client 5.2.6. We strongly recommend that you do so at the earliest opportunity.

    Features

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

    Fixes

    • 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

    Features

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

    • Add error code AEROSPIKE_LOST_CONFLICT.

    Fixes

    • 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

    Features

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

    Fixes

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

    Features

    • 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 5.2.0.4+ requirement. Expression API usage still requires server 5.2.0.4+.

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

    Fixes

    • 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 5.2.0.4+. It's not recommended to use this client version since client 5.0.1 has more relaxed server version requirements.

    Features

    • 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 5.2.0.4+. See Incompatible API change.

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

    Fixes

    • 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.24
    Release Date: January 3, 2022

    Fixes

    • CLIENT-1637 Continue processing scans when "partition unavailable" errors occur. "partition unavailable" is not a fatal error for partition scans and the server will continue sending back results for other partitions. Previous clients aborted the scan and put the connection back into the pool which might cause unprocessed results to be sent to a different transaction.

  • 4.6.23
    Release Date: July 12, 2021
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    Bug Fixes

    • CLIENT-1559 Do not wait for async connector completion when async_min_conns_per_node > 0 and connector is already running in an event loop thread. This is done to prevent deadlock.

  • 4.6.22
    Release Date: May 25, 2021
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    New Features

    • CLIENT-1540 Support placing as_record instance on heap before calling as_async_record_listener. Enable by setting async_heap_rec to true in as_policy_read or as_policy_operate. If enabled, the user is responsible for calling as_record_destroy() when done with the record.

  • 4.6.21
    Release Date: April 13, 2021
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    New Features

    • 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
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    Bug Fixes

    • 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
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    Bug Fixes

    • 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
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    New Features

    • Add support for Ubuntu 20.04.
    • Drop support for Ubuntu 14.04.

    Bug Fixes

    • 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
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    New Features

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

    Bug Fixes

    • 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
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    New Features

    • CLIENT-1278 Support minimum connections.

    Bug Fixes

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

  • 4.6.15
    Release Date: April 28, 2020
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    Bug Fixes

    • 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
    • A bug affecting this version of the C client has been identified.
      • If your application uses scans, we strongly recommend that you upgrade to C client 4.6.24 at the earliest opportunity.

    New Features

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

    Bug Fixes

    • 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

    Features

    • Support batch calls in benchmarks.

    • Add socket timeout command line argument in benchmarks.

    Fixes

    • 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

    Fixes

    • 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

    Fixes

    • 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

    Features

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

    Fixes

    • 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

    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

    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.

    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

    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.

    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

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

    • Fixed memory stomp in unit test framework.