Database 8.1.2 Release Notes
April 16, 2026 | Download
New in this version
- Enhanced path expressions
- Operation projection added to queries
- Set index management
- Support for AlmaLinux 9 and 10
Enhanced path expressions
Enhanced the expression API to make path expressions easier to write.
Path expressions significantly enhance Aerospike’s capability as a document store, simplifying the developer experience by offering native support for JSON-like models. Developers can effectively model data as a list of map elements and easily index, query, and retrieve data from those complex structures. When combined with index expressions, you can use path expressions to index and query data within deeply nested structures.
See Path expressions for details.
Operation projection in queries
Queries now accept the same bin projection, operations, and read expressions used in single-key and operate batched-commands. This unifies the developer API and eliminates the two-phase query and batch workaround.
- Use read operations (bin reads, collection data type (CDT) API and read expressions) in query projections.
- Apply path expressions in query projection, not only in the filter expression.
- Reduce bandwidth and latency by projecting only requested bins or values computed server-side.
- Projection of a list of bin-names remains supported for backward compatibility.
See Operation projection in queries for details.
Manage set indexes with info commands
You can create and delete set indexes using the same info commands as secondary indexes, with the sindex-admin privilege. With this change, you can manage set indexes on Aerospike Cloud, where the sys-admin role is not available to users.
- Create a set index – Use
sindex-createwithindextype=setand a required index name, namespace, and set. The equivalent command inasadmismanage sindex create INDEX-NAME ns NAMESPACE set SET. - Delete a set index – Use
sindex-deletewith the index name, namespace, and set. The sindex-admin privilege is required. - List indexes –
sindex-listandshow sindexinclude both secondary and set indexes. The output includes a mode column (secondaryordigest).
See Managing set indexes and Set index.
Deprecated: set-config / enable-index for set index lifecycle
Creating or removing set indexes via set-config (or asadm manage config) with enable-index is deprecated. Use sindex-create and sindex-delete instead. Deprecation warnings are logged when the config method is used. Backward compatibility is maintained: you can still use set-config/enable-index for existing workflows, but new set indexes should use sindex-create. See Managing set indexes and Special upgrades for upgrade guidance.
Control group (cgroup) memory tracking
The new cgroup-mem-tracking service configuration parameter enables control group (cgroup)-aware stop-writes memory calculations. When enabled, system_free_mem_kbytes and system_free_mem_pct report control group (cgroup)-aware values. The new host_free_mem_kbytes and host_free_mem_pct statistics always report host-level memory. Even when disabled, the server logs a warning if a control group (cgroup) memory limit is detected and less than 10% is available.
Query threads limit warning
The warning about exceeding query-threads-limit is now rate-limited through the ticker instead of emitted per query. Per-job failure warnings are demoted to detail level.
TLS CA hot-reload (Enterprise only)
The TLS refresh mechanism now monitors ca-file and ca-path for changes. When CA trust material changes, the SSL context is rebuilt and swapped, enabling CA rotation without a node restart.
XDR recovery drain on prole (Enterprise only)
Pending XDR recovery retry requests are now drained when a partition transitions to prole, preventing a possible invariant violation where a node could become master with more than MAX_IN_PROGRESS outstanding requests.
Tools updates
See the Tools 13.0.0 release notes for full details.
Upgrade instructions
You can upgrade directly to Database 8.1.2 from releases 7.1.0.x through 8.1.1.x.
- For upgrade instructions, see Upgrade or repair an Aerospike server.
- For special upgrade instructions, see Special upgrades and downgrades.
Info command updates
| Item | Action | Notes |
|---|---|---|
sindex-create | extended | Add mode=digest to create a set index. Default mode=secondary for traditional secondary indexes. |
sindex-delete | extended | Supports deleting set indexes created with sindex-create. |
sindex-list | extended | Output includes set indexes; mode (or equivalent) column indicates secondary or digest. |
sindex-exists | extended | Checks for set indexes in addition to secondary indexes. |
Configuration / set-config
| Item | Action | Notes |
|---|---|---|
set-config / enable-index for set index create/remove | deprecated | Use sindex-create with mode=digest and sindex-delete instead. See Managing set indexes. |
tomb-raider-unmark-threads | added | Caps parallelism during the tomb raider unmark phase. |
cgroup-mem-tracking | added | When enabled, stop-writes memory calculations use control group (cgroup) limits instead of host /proc/meminfo. |
proto-fd-max | modified | Upper limit increased from 2,097,152 to 2,147,483,647 (INT32_MAX). |
Statistics changes
| Item | Action | Notes |
|---|---|---|
host_free_mem_kbytes | added | Always reports host-level free memory in KiB, regardless of cgroup-mem-tracking. |
host_free_mem_pct | added | Always reports host-level free memory percentage, regardless of cgroup-mem-tracking. |
system_free_mem_kbytes | modified | When cgroup-mem-tracking is enabled, reports control group (cgroup)-aware values. |
system_free_mem_pct | modified | When cgroup-mem-tracking is enabled, reports control group (cgroup)-aware values. |
stop-writes-sys-memory-pct | modified | Memory evaluation now respects cgroup-mem-tracking. |
Server log changes
| Item | Action | Notes |
|---|---|---|
| system cpu/memory stats ticker | modified | Added host-free-mem-kbytes and host-free-mem-pct fields to the system ticker line. |
| control group (cgroup) used bytes exceed limit | added | Warns when cgroup used bytes exceed the configured memory limit. |
| control group (cgroup) zero available memory | added | Warns when cgroup reports zero available memory. |
| control group (cgroup) memory below 10 percent | added | Warns when cgroup-available memory drops below 10%. |
| failed to read /proc/meminfo | added | Warns when the server cannot read /proc/meminfo. |
| bad cgroup-mem-tracking value | added | Warns on an invalid cgroup-mem-tracking configuration value. |
| cgroup-mem-tracking already set | added | Logged when cgroup-mem-tracking is set to its current value. |
| cgroup-mem-tracking changed from false | added | Logged when cgroup-mem-tracking is enabled. |
| cgroup-mem-tracking changed from true | added | Logged when cgroup-mem-tracking is disabled. |
| query-threads-limit reached (ticker) | added | Rate-limited ticker warning replaces the former per-query warning. |
| basic query job failed to start (demoted) | added | Demoted from warning to detail level. |
| aggregation query job failed to start (demoted) | added | Demoted from warning to detail level. |
| udf-bg query job failed to start (demoted) | added | Demoted from warning to detail level. |
| ops-bg query job failed to start (demoted) | added | Demoted from warning to detail level. |
| expression display null | added | Warns when an expression is null during display. |
| build_in_list invalid arg type | added | Invalid argument type for IN_LIST expression. |
| eval_in_list list expected | added | IN_LIST expression received a non-list argument. |
| build_count_sz invalid instruction | added | Invalid instruction during expression build. |
| cdt_select_map invalid key list | added | Invalid key list in CDT map select. |
| cdt_select_map key list not ordered | added | Unordered key list in CDT map select. |
| cdt_select_stack_init AND invalid ctx type | added | Invalid context type in CDT select AND clause. |
| cdt_select_stack_init AND no preceding entry | added | AND clause with no preceding entry in CDT select. |
| cdt_select_stack_init duplicate AND | added | Duplicate AND in CDT select stack. |
| cdt_select_stack_init AND on EXP base | added | AND clause on expression base in CDT select. |
| sindex-create context not supported for set index | added | Context parameter not supported for set index creation. |
| sindex-create indexdata not supported for set index | added | Index data parameter not supported for set index creation. |
| sindex-create type not supported for set index | added | Type parameter not supported for set index creation. |
| sindex-create bin not supported for set index | added | Bin parameter not supported for set index creation. |
| sindex-create exp not supported for set index | added | Expression parameter not supported for set index creation. |
| sindex-create namespace not found | added | Namespace not found during set index creation. |
| sindex-create failed to get/create set | added | Failed to get or create set during set index creation. |
| sindex-delete deleting in SMD | added | Logged when a set index is deleted via SMD. |
| SINDEX CREATE index name already in use | added | Index name collision during set index creation. |
| SINDEX CREATE failed get-create set | added | Failed to get or create set during SMD processing. |
| SINDEX DROP set not found | added | Set not found during set index drop. |
| SINDEX DROP si not found | added | Secondary index not found during set index drop. |
| set index enabled via different method - cannot enable | added | Cannot enable a set index that was enabled via a different method. |
| set index already disabled | added | Set index is already disabled. |
| set index enabled via different method - cannot disable | added | Cannot disable a set index that was enabled via a different method. |
| smd set name required for set index | added | Set name required when creating a set index via SMD. |
| SINDEX CREATE renaming index | added | Logged when an existing set index is renamed. |
| SINDEX CREATE request received via SMD | added | Logged when a set index create request arrives via SMD. |
| SINDEX DROP already disabled | added | Set index already disabled during drop. |
| SINDEX DROP request received via SMD | added | Logged when a set index drop request arrives via SMD. |
| changing creation mode of set index | added | Logged when a set index creation mode changes. |
| set index already enabled via method | added | Set index already enabled via the specified method. |
| basic query job no bin data and projection ops both set | added | Cannot set both no-bin-data and projection operations. |
| queries should only provide read ops | added | Query projection received a non-read operation. |
| apply_ops_make_response failed | added | Projection operation response construction failed. |
| build_ops_response_msg can’t get key | added | Cannot retrieve key during projection response. |
| apply_ops_make_response bad number of ops | added | Unexpected operation count during projection response. |
| read_local bad number of ops | added | Unexpected operation count in local read. |
| error while fetching timestamp for CA file | added | Error reading timestamp of CA file during refresh check. |
| failed to load CA file | added | CA file could not be loaded during hot-reload. |
| retrying CA refresh in context | added | CA refresh failed; retrying in the named TLS context. |
| ca-file changed in context | added | Detected change to ca-file in a TLS context. |
| ca-path changed in context | added | Detected change to ca-path in a TLS context. |
| updated ca-file | added | Successfully reloaded ca-file. |
| updated ca-path | added | Successfully reloaded ca-path. |
Known issues
See Database known issues reference for details.
Complete list of changes
| ID | Description |
|---|---|
| AER-6866 | (LOGGING) Improve memory statistics and logging when running inside a control group (cgroup). |
| AER-6883 | (STATS) Introduced option to base stop-writes on control group (cgroup) limits. |
| AER-6884 | (EXPRESSIONS) Fix assert for invalid CDT context in expression display. |
| AER-6885 | (CONFIG) Increase proto-fd-max upper limit to INT32_MAX. |
| AER-6886 | (QUERY) Rate-limit query-threads-limit warning to ticker instead of per-query. |
| AER-6889 | (EXPRESSIONS) Add IN_LIST, MAP_KEYS, MAP_VALUES expression ops. |
| AER-6890 | (LOGGING) Improved bad record on disk logging. |
| AER-6891 | (SINDEX) Create set indexes with sindex-admin role. |
| AER-6892 | (SINDEX) Implement operation projection for foreground queries. |
| AER-6893 | (STORAGE) Introduced tomb-raider-unmark-threads to control parallelism across all devices. |
| AER-6895 | (CICD) Implement server builds from GitHub action runners. |
| AER-6897 | (TLS) Hot-reload CA trust material (ca-file, ca-path) without node restart (Enterprise only). |
| AER-6898 | (XDR) Drain pending XDR recovery retry requests when partition transitions to prole (Enterprise only). |