Features
- Update to C Client version 4.3.1
- Added a new list increment operation OP_LIST_INCREMENT . It can be used to increase an element of a list by a provided amount.
- Added the option to specify a specific node to run on a scan on, via a new optional nodename parameter Client-939
- Added the option to specify that Query.results and Query.foreach should not return bins, via a new optional parameter options to both methods. Client-915
- Added aerospike.info_all() to allow sending of an info command to all nodes in the current cluster.
- Added linearize_read option to read policies. Client-951. Requires Enterprise server >= 4.0.0
- Enable aerospike.get_nodes() to run when connected to a TLS enabled server.
- Enable aerospike.info_node() to function when using a TLS enabled server. View the documentation for the method to see the steps necessary for contacting a TLS enabled server.
- Add additional policy values which can be specified during client construction, or via arguments to functions.
- Add stricter typechecking of policy values passed in to constructor.
- Add finer granularity to constructor policy options, adding support for setting base policies for Read, Write, Operate, Apply, Scan, Batch, Remove, and Query methods individually.
- Simplified installation on Debian 9
Fixes
- Fix: large malloc in UDF exceptions, memory leaks in remove_bins, and query_apply (CLIENT-944)
- Fix bugs in `query_apply` (CLIENT-945)
- Fix: Incorrect values for predicate in query apply causes system error, crash in debug builds of python
- Fix: `get_many`, `exists_many`, `select_many` crash with byte array keys (CLIENT-954)
- Fix: Invalid key tuple when utilizing batch direct leads to invalid free (Client-955)
- Fix: Non integer values passed as arguments to query_apply inside of numeric_range_predicate, will be cast to 0.
- Fix: Allow meta=None to be passed to arguments with an optional metadata dictionary parameter. Setting it to None will have the same effect as not providing the argument.
Documentation
- Improved Doc strings for Client methods. Thanks to Dundee for this contribution!
- Added api-changes.md to the github repository to give detailed information on changes between client versions
- Updated documentation for the client policies to show new field names and defaults.
- Updated the documentation for certain CDT methods: `list_get`, `list_get_range`, `list_size`, `map_size`, `map_get_by_key`, `map_get_by_key_range`, `map_get_by_value`, `map_get_by_value_range`, `map_get_by_index`, `map_get_by_index_range`, `map_get_by_rank`, `map_get_by_rank_range` to accurately specify that the meta argument is currently unused in those methods.
- Update BUILD.md to include downloading the python client.( CLIENT-940)
- Fix documentation error: OS environment variables are not passed into the python setup.py build --force command (Client-942)
- Fix incorrect import of errors in code snippets.
Backwards Incompatible Changes
- Added a new file to the github repository: https://github.com/aerospike/aerospike-client-python/blob/master/api-changes.md . Giving more detailed information about changes between client versions.
- Removed LDT (Llist) support and related methods.
- Methods which create indexes will now raise an error if the specified bin has already been indexed, or if an index with the same name already exists.
- Methods which drop indexes, will now raise an error if the named index does not exist.
- Shared memory layout has changed, and as such the default shm key has changed to '0xA7000000' . If manually specifiying an
- shm key, it is crucial to ensure that a separate key is used in order to prevent this version's client from sharing memory with a previous version.
- The names of certain policy fields has changed. See the documentation for up to date information. Specifically: 'timeout' has been changed into two separate fields `total_timeout` and `socket_timeout` for all policies besides 'admin' and 'info'. Currently `timeout` will act as an alias for `total_timeout`, but that should be considered deprecated, and will be removed in the future.
- `retry` as a key in policy dicts has been removed in favor of `max_retries`, and the default number of retries for read operations is now 2.
*WARNING*: Database writes that are not idempotent (such as an aerospike.increment) should not be retried because the write operation may be performed multiple times if the client timed out previous transaction attempts. It's important to use a distinct policy for non-idempotent writes which sets `max_retries` = 0;
Deprecations
- `client.info` has been deprecated. In order to send requests to the entire cluster, the new method `client.info_all` should be used. In order to send requests to hosts specified in a list, we recommend a loop invoking multiple calls to `aerospike.info_node`. See the api-changes file for an example of such code.
- Setting of global policy defaults via entries in the `policies` dictionary in the constructor config dict has been deprecated. See the constructor documentation for the new recommended method of specifying defaults.