v2.1.5
FlashLabs-AI-Corp/FlashLabs-Chromav2.1.5Aug 12, 2026by krinart
AI Summary
A patch release enhancing cached data reliability and memory management, ensuring cached queries stay fresh under heavy load and health checks remain responsive during updates.
Key Highlights
- Cached queries now clear reliably after data changes
- Predictable Cayenne memory behavior under concurrent workloads
- Health checks remain responsive during cache updates
- Improved cache dashboards with consistent metrics
New Features
- Enhanced cache invalidation logic preventing stale data reuse
- Shared memory planning for multiple accelerated tables
- Improved cache dashboard showing total space, requests, and reuse
Full Release Notes
Spice v2.1.5 is a patch release focused on dependable cached data and predictable operation under load. Cached queries now reflect data changes more reliably, Cayenne workloads stay within configured memory limits, health checks remain responsive while cached results are updated, and cache dashboards provide a more complete view of activity. ## What's New in v2.1.5 ### Cached Queries Stay Fresh as Data Changes Cached results are now cleared reliably after refreshes, writes, retention changes, and updates to dependent local datasets. Expired entries are removed promptly, and entries for data that is no longer part of a Cayenne dataset are not reused by later queries. These improvements prevent a completed data change from being followed by an older cached answer. No configuration changes are required. ### More Predictable Cayenne Behavior Under Heavy Load Cayenne now keeps track of the memory needed to prepare query results, including when several parts of a query are prepared at once. Multiple accelerated tables also share available memory instead of each planning as though it were the only table in the deployment. Large and concurrent workloads are therefore less likely to exhaust the available memory. When a query cannot fit within the configured limit, it fails cleanly instead of putting the entire service at risk. Operators can also limit how much work one dataset does at once when it needs a smaller memory footprint, without slowing every query. ### Health Checks Remain Responsive During Cache Updates Refreshing or writing a dataset with many cached results no longer holds up Spice while it finds old answers that need to be cleared. Health checks and other requests can continue during this work, reducing avoidable service restarts under load. ### More Trustworthy Cache Dashboards Cache dashboards now show total space, space in use, stored results, requests, and successful reuse whenever the dashboard is refreshed, including for new or lightly used datasets. Counts for expired results, automatic size cleanup, and cleanup after data changes are also reported consistently, so a zero value represents no activity rather than missing information. ## Contributors - [@bjchambers](https://github.com/bjchambers) - [@krinart](https://github.com/krinart) - [@lukekim](https://github.com/lukekim) - [@phillipleblanc](https://github.com/phillipleblanc) ## Breaking Changes No breaking changes. ## Cookbook Updates No new cookbook recipes. The [Spice Cookbook](https://spiceai.org/cookbook) includes more than 100 recipes to help you get started with Spice quickly and easily. ## Upgrading To upgrade to v2.1.5, use one of the following methods: **CLI**: ```console spice upgrade ``` **Homebrew**: ```console brew upgrade spiceai/spiceai/spice ``` **Docker**: Pull the `spiceai/spiceai:2.1.5` image: ```console docker pull spiceai/spiceai:2.1.5 ``` For available tags, see [DockerHub](https://hub.docker.com/r/spiceai/spiceai/tags). **Helm**: ```console helm repo update helm upgrade spiceai spiceai/spiceai --version 2.1.5 ``` **AWS Marketplace**: Spice is available in the [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i). ## What's Changed ### Changelog - fix: arrow IndexedMemTable serves stale results after DML/retention/sync (fixes #11262) by [@claudespice](https://github.com/claudespice) in [#11532](https://github.com/spiceai/spiceai/pull/11532) - fix(cache): evict the Pingora cache down to max_size instead of only recording it (fixes #12688) by [@grokspice](https://github.com/grokspice) in [#12694](https://github.com/spiceai/spiceai/pull/12694) - fix(cache): count an invalidation as an eviction, and export the counters before one fires (fixes #12687) by [@grokspice](https://github.com/grokspice) in [#12791](https://github.com/spiceai/spiceai/pull/12791) - fix(cache): never serve a result whose tables changed after it read them by [@bjchambers](https://github.com/bjchambers) in [#12703](https://github.com/spiceai/spiceai/pull/12703) - Remove unnecessary allocations from results-cache and hot conversion paths by [@phillipleblanc](https://github.com/phillipleblanc) in [#11895](https://github.com/spiceai/spiceai/pull/11895) - fix(cache): read and expire a Pingora entry under one hold of its shard (fixes #12832) by [@grokspice](https://github.com/grokspice) in [#12839](https://github.com/spiceai/spiceai/pull/12839) - fix(runtime): invalidate localpod children's cached results on parent refresh by [@krinart](https://github.com/krinart) in [#12897](https://github.com/spiceai/spiceai/pull/12897) - fix(cache): run the Pingora invalidation scan off the calling runtime worker (fixes #12806) by [@grokspice](https://github.com/grokspice) in [#12808](https://github.com/spiceai/spiceai/pull/12808) - fix(cache): count the removals the Pingora engine performs itself (fixes #12792) by [@grokspice](https://github.com/grokspice) in [#12830](https://github.com/spiceai/spiceai/pull/12830) - feat(cayenne): charge scan materialization to the query memory pool by [@lukekim](https://github.com/lukekim) in [#12759](https://github.com/spiceai/spiceai/pull/12759) - feat(cayenne): bound the SUM of the per-table PK keyset caches by [@lukekim](https://github.com/lukekim) in [#12802](https://github.com/spiceai/spiceai/pull/12802) - Charge the query memory pool for concurrent Vortex split decodes by [@lukekim](https://github.com/lukekim) in [#12940](https://github.com/spiceai/spiceai/pull/12940) - fix(vortex): invalidate retired segment cache entries by [@phillipleblanc](https://github.com/phillipleblanc) in [#12943](https://github.com/spiceai/spiceai/pull/12943) - fix(vortex): expose segment cache metrics on scrape by [@phillipleblanc](https://github.com/phillipleblanc) in [#12944](https://github.com/spiceai/spiceai/pull/12944) **Full Changelog**: <https://github.com/spiceai/spiceai/compare/v2.1.4...v2.1.5>