Skip to main content

Aerospike Database 7.1 Release Notes

Aerospike Database Release Notes 7.1

May 15, 2024

Aerospike Database software version 7.1 is now available.

New in this version

This version implements a variety of feature requests and improvements to enhance performance, usability and reliability.

New features

  • Adds support for Least Recently Used (LRU) evictions.
  • See the detailed complete list of all new features.


Improvements and enhancements

  • Previously, if a streaming write buffer (SWB) did not fill up before the flush-max-ms time (by default 1 second), the partially full SWB would be flushed to a persistent storage device with padding. In order to reduce excess IO in lower throughput situations, the writes that have accumulated are written in flush-size units, and appended to the previously written data in the write-block.
  • Partial flushes under the current buffer lock no longer block service threads trying to write to the buffer. Applies to storage-engine device and storage-engine memory with storage-backed persistence.
  • CPU consumption is reduced for encryption-at-rest, as encryption is done in the flush threads instead of the service or fabric threads.
  • The server now strictly restricts Map keys to one of these data types - integer, string or blob.
  • In server 7.1 (and hotfixed in all 6.x releases) the client can reserve partitions that are not full for short queries against available and partition tolerant (AP) namespaces. This prevents short queries from timing out completely when the cluster is rebalancing its data after a cluster size change. Following a slow rolling upgrade process (waiting for migrations to complete) reduces the chance of race conditions when short queries may miss records that were just written within the cluster tend interval (by default 1 second). This is not an issue in strong-consistency (SC) namespaces, or in stable AP namespaces.
  • The new query duration policy allows clients to reserve partitions that are not full for long queries running against AP namespaces. This should only be used for long queries that behave like short queries, meaning that they quickly return a very small number of records. By default long queries will behave as before, returning correct results even when AP namespaces are being rebalanced, by deferring queries against migrating partitions until they have completed their migration.
  • In storage-engine memory namespaces with no storage backing, the server will not start if commit-to-device is set to 'true'.
  • Added namespace configuration items indexes-memory-budget and evict-indexes-memory-pct to manage memory usage by all indexes.

Configuration item changes

write-block-sizeremovedUse flush-size or post-write-cache.
post-write-queueremovedReplaced by post-write-cache
default-password-fileaddedSpecifies an initial password for the default admin user.
indexes-memory-budgetaddedWhen nonzero, triggers stop-writes if the combined RAM indexes' size (primary, secondary, and set indexes) exceeds the budget.
evict-indexes-memory-pctaddedWhen nonzero, triggers eviction if indexes-memory-budget is also configured nonzero, and the combined RAM indexes' size exceeds the configured percentage of the budget.
batch-max-requestsreintroducedLimits the number of sub-requests per batch transaction.
default-read-touch-ttl-pctaddedAllows reads that are within a specified percent of their expiration time to extend the record TTL. Used to support LRU evictions.
auto-reviveaddedSelectively revives partitions at startup.
tls-refresh-periodaddedHow often a background thread should check with Secret Agent for new TLS certificates.
flush-sizeaddedSpecifies the size of storage write units.
post-write-cacheaddedReplaces post-write-queue.
storage-engine deviceenhancedEncrypt on flushing to device instead of on writing to buffers.
max-record-sizemodifiedDefault value changed to 1MiB.
storage-engine memorymodifiedChanged the minimum allowed value of data-size to 128M. Applies only to memory namespaces with no backing.

Metrics changes

auto_revived_partitionaddedShows the number of partitions automatically revived at startup.
migrate_fresh_partitionsaddedAdded for AP.
read_errorsaddedIn the per-device stats, tracks read IO errors from the SSD. Relevant only for storage-engine device .
read_touch_tsvc_erroraddedNumber of read touches that time out in the internal transaction queue due to an error. (A read_touch is a read operation that extends the expiration of a record based on the read-touch-ttl-pct.)
read_touch_tsvc_timeoutaddedNumber of read touches that time out early in the internal transaction queue, while waiting to be picked up by a service thread.
read_touch_successaddedNumber of successful read touches.
read_touch_erroraddedNumber of read touch errors which were not timeouts.
read_touch_timeoutaddedNumber of touches that ended in timeout.
read_touch_skipaddedHow many touches were abandoned because another write (including an earlier touch) has taken place or is taking place, removing the need to proceed with the touch.
indexes_memory_used_pctaddedCombined RAM indexes' size as a percentage of when indexes-memory-budget is configured to nonzero.
batch-rec-countaddedGlobal logarithmic histogram tracking the number of records per batch request. This histogram is dumped in the ticker - it will appear immediately following the batch-index latency histogram.

Server log changes

read-touchaddedStatistics for the read-touch LRU behavior.
info-commandaddedLogs text of info-command IP address of client.
bytes-shippedaddedXDR ticker log line now has how many shipped to a specific destination.
read-completeenhancedAdded UNPARSABLE count.
expected-migrationsenhancedAdded fresh-partitions to the partition balance log line in SC.
NSUP log lines or eviction or stop-writes breachesenhancedMay now have a new reason: indexes-memory.
Breached eviction log lineenhancedMay now show a used-pct: 'NUMBER' in the indexes-memory section if indexes-memory-budget is configured nonzero.

Tools changes

Changes in Tools 11.0

See Tools 11.0.0 Release Notes.

Client/server feature compatibility

For a complete list of client features and the server versions that support them, see the Client Matrix.

Minimum compatible client versions

For full feature access in server 7.1:

  • Java client 8.1
  • Python client 15.0
  • C# client 7.1
  • C client 6.6
  • Go client 7.2
  • Node.js client 5.12
  • PHP 1.0

Ecosystem compatibility

Compatible connector versions

  • Trino connector 1.7 or later
  • Spark connector 3.2.2 or later

Prerequisites and notes

Complete list of changes

AER-6696(ACL) Added security context configuration item default-password-file to specify an initial password for the default "admin" user.
AER-6697(STATS) Added some minor stats, and made assorted logging and debugging improvements.
AER-6698(STORAGE) For storage-engine device namespaces with encryption configured, encrypt on flushing to device instead of on writing to buffers.
AER-6699(KVS) Introduced policy and configuration to enable reads to occasionally touch a record and extend its life.
AER-6703(STORAGE) Flush partially filled current buffers to device outside the current buffer lock.
AER-6707(CDT) Restrict map keys to simple types -- integer, string, and blob.
AER-6708(QUERY) Added a policy to allow long queries in AP namespaces to reserve any partition with data.
AER-6710(BALANCE) Added strong-consistency namespace context configuration item auto-revive to selectively revive partitions at startup.
AER-6713(TLS) Added service context configuration item tls-refresh-period to support dynamic TLS certificate rotation for all types.
AER-6715(BATCH) Reintroduced service context configuration item batch-max-requests to limit the number of sub-requests per batch transaction.
AER-6716(STORAGE) Removed storage context configuration item write-block-size.
AER-6717(STORAGE) Added storage context configuration item flush-size to specify the size of large block writes.
AER-6718(STORAGE) Replaced storage context configuration item post-write-queue with post-write-cache.
AER-6719(STORAGE) Changed default value of namespace context configuration item max-record-size to 1MiB.
AER-6722(STORAGE) For storage-engine memory namespaces, changed the minimum allowed value of data-size to 128M.
AER-6729(STORAGE) For storage-engine memory namespaces without backing, commit-to-device is no longer configurable since the behavior is automatic.
AER-6730(TLS) Support rotating from RSA to ECDSA certificates at runtime.
AER-6733(KVS) Added namespace context configuration items indexes-memory-budget and evict-indexes-memory-pct to manage memory usage by all indexes.

Product lifecycle updates

Aerospike provides Maintenance and Support for 2 years (24 months) from it's generally available (GA) release. See Platform support for details.

Known issues