date: 2026-08-04 title: 'Spice v2.1.3 (Aug 4, 2026)' type: blog authors: [sgrebnov] tags: [release, cayenne, acceleration, iceberg]
Spice v2.1.3 is now available! 🛠️
Spice v2.1.3 is a patch release focused on resource efficiency: explicit CPU sizing with the new runtime.cpu.cores setting, more query memory for Cayenne deployments, and improved memory and crash diagnostics. It also fixes Cayenne acceleration of Iceberg datasets with timestamptz columns and restores WHERE filters on federated LEFT/RIGHT JOIN queries.
runtime.cpu.coresThe new runtime.cpu.cores setting controls how many cores the runtime targets. Thread pools, query partitioning, and accelerator concurrency are all derived from it.
Also available as --cpu-cores and SPICE_CPU_CORES (precedence: flag > environment > Spicepod).
This is most useful on large, shared nodes. A pod that sets resources.requests.cpu without a CPU limit exposes no cgroup quota, so the runtime sizes itself for every core on the node rather than its allocated share. Setting the entitlement aligns parallelism and memory footprint with the CPU the pod actually receives.
The effective value, its source, and the derived sizing are logged at startup and exported as the spiced_cpu_budget_cores gauge.
The Cayenne (opens in a new tab) compaction memory pool is now reserved only for accelerations that can compact into it: file mode with a small-write refresh profile. Other deployments, including refresh_mode: full, keep the full memory limit available to queries — up to 6.4 GiB on a 32 GiB limit, with no configuration change.
Memory budgets are now derived from the process's own cgroup limit rather than total host memory.
Three new gauges report memory in use: query_memory_pool_used_bytes, cayenne_compaction_memory_pool_used_bytes, and process_resident_memory_bytes.
Memory pool refusals now return ResourcesExhausted and HTTP 503, distinguishing them from query errors.
Fatal native signals (SIGSEGV, SIGBUS, SIGILL, SIGFPE) report the signal, faulting address, and thread before exit, so a crash can be diagnosed from logs.
Fixed a bug where setting runtime.task_history.enabled: false also disabled every query metric — query_duration_ms, query_execution_duration_ms, query_executions, query_failures, query_returned_rows, and query_returned_bytes. These are now reported regardless of the task history setting.
timestamptz ColumnsAccelerating an Iceberg dataset with a timestamptz column using the Cayenne (opens in a new tab) engine previously failed during the refresh write with an error resolving the time zone +00:00. Iceberg maps every timestamptz column to the fixed-offset Arrow time zone +00:00, which the file writer could not resolve when building column statistics. Fixed-offset time zones (±HH:MM, ±HHMM, and ±HH) are now resolved wherever time zones are handled, so these datasets accelerate correctly.
A federated query combining a LEFT JOIN with a WHERE filter on the left table previously returned all rows instead of the filtered rows: when the query was pushed down to the data source or accelerator, the filter was folded into the JOIN ON clause, where it no longer filters the left side (RIGHT JOIN was affected symmetrically). Filters now stay on the side of the join they came from, so these queries return the correct rows.
No breaking changes.
No new cookbook recipes.
The Spice Cookbook (opens in a new tab) includes more than 100 recipes to help you get started with Spice quickly and easily.
To upgrade to v2.1.3, use one of the following methods:
CLI:
Homebrew:
Docker:
Pull the spiceai/spiceai:2.1.3 image:
For available tags, see DockerHub (opens in a new tab).
Helm:
AWS Marketplace:
Spice is available in the AWS Marketplace (opens in a new tab).
*Full Changelog: https://github.com/spiceai/spiceai/compare/v2.1.2...v2.1.3 (opens in a new tab)