v2.1.2

BigBodyCobain/Shadowbrokerv2.1.2Jul 29, 2026by sgrebnov

AI Summary

Patch release improving the DuckDB data accelerator with bounded file growth and upgrading to DuckDB 1.5.5.

Key Highlights

  • Bounded DuckDB acceleration file growth with new `on_full_refresh` parameter
  • DuckDB engine upgraded to v1.5.5

New Features

  • Bounded DuckDB acceleration file growth with on_full_refresh parameter
  • DuckDB engine upgrade to v1.5.5

Full Release Notes

Spice v2.1.2 is a patch release focused on improving the DuckDB data accelerator. It upgrades the DuckDB engine to v1.5.5 and introduces the `on_full_refresh` parameter, giving file-mode DuckDB accelerations compact, predictable disk usage across repeated full refreshes.

## What's New in v2.1.2

### Bounded DuckDB Acceleration File Growth with `on_full_refresh`

File-mode [DuckDB](https://spiceai.org/docs/components/data-accelerators/duckdb) accelerations using `refresh_mode: full` now reclaim disk space on every refresh, keeping the database file compact and disk usage predictable for long-running deployments. Each full refresh bulk-loads a fresh copy of the data, and the new `on_full_refresh` modes ensure the space held by prior copies is returned rather than accumulating in the file.

The new `on_full_refresh` acceleration parameter controls how disk space is reclaimed after each full refresh:

```yaml
acceleration:
  engine: duckdb
  mode: file
  refresh_mode: full
  params:
    duckdb_file: /data/shared.duckdb
    on_full_refresh: replace_file # default: reuse_file
```

- `reuse_file` (default): Existing behavior — refresh into the existing database file.
- `replace_file`: Each full refresh streams data into a fresh staging database file, carries over every other object sharing the file (other datasets' tables, views, indexes, and Spice metadata), checkpoints it, and atomically replaces the configured file. Queries are never interrupted — in-flight queries drain against the old file while new queries see the new file — and space is fully reclaimed on every refresh.
- `checkpoint_file`: After each refresh, run a `CHECKPOINT` in place, escalating to `FORCE CHECKPOINT` when concurrent transactions block the plain attempt (waiting for in-flight transactions; never aborting them).

### DuckDB 1.5.5

The DuckDB engine is upgraded from v1.5.3 to [v1.5.5](https://github.com/duckdb/duckdb/releases/tag/v1.5.5), bringing the latest upstream stability fixes.

## Contributors

- [@lukekim](https://github.com/lukekim)
- [@sgrebnov](https://github.com/sgrebnov)
- [@bjchambers](https://github.com/bjchambers)
- [@krinart](https://github.com/krinart)

## 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.2, use one of the following methods:

**CLI**:

```console
spice upgrade
```

**Homebrew**:

```console
brew upgrade spiceai/spiceai/spice
```

**Docker**:

Pull the `spiceai/spiceai:2.1.2` image:

```console
docker pull spiceai/spiceai:2.1.2
```

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.2
```

**AWS Marketplace**:

Spice is available in the [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i).

## What's Changed

### Changelog

- feat(duckdb): `on_full_refresh: replace_file` — full refresh into a new database file, atomically replaced by [@lukekim](https://github.com/lukekim) in [#12135](https://github.com/spiceai/spiceai/pull/12135)
- feat(duckdb): 'on_full_refresh: checkpoint_file' to bound acceleration file growth by [@sgrebnov](https://github.com/sgrebnov) in [#12139](https://github.com/spiceai/spiceai/pull/12139)

**Full Changelog**: <https://github.com/spiceai/spiceai/compare/v2.1.1...v2.1.2>