VulCode

Sonic: our changes to an open source project

A lightweight search backend in Rust, an alternative to Elasticsearch that runs in a few megabytes of RAM.

All contributions
Language
Rust
GitHub stars
21,357
5merged changes
From 15 Sep 2026 to 5 Oct 2026.
Number 9 of the 64 GitHub projects with our changes, by stars. First is Zed (91,587).

Every change merged into Sonic

Newest first, as written in the project's repository. Each row opens the pull request with its merge date.

What these fixes changed

Backups through TRIGGER backup work while stores are in use, backups include FST buckets again, a channel no longer leaks a client slot after a read error, and the docs explain the name limit and the write buffer.

The bug, the fix and the lesson

A summary of our Tech news write-up: what was broken, what we changed and what it means for our own work.

What was broken

The backup failed with the store open

After a PUSH the RocksDB database stays open in the pool, and TRIGGER backup tried to open it a second time and hit the held LOCK file. On a fresh server the store directories did not exist yet.

What we changed

A backup from the open instance

When the store is in the pool, the backup is taken from that instance after flushing its buffers to disk. A missing directory is skipped instead of failing.

match pooled_store {
Some(store) => kv_backup_engine.create_new_backup_flush(&store.database, true),
None => {
let origin_kv = self.open(store_id, |_| {})?;
kv_backup_engine.create_new_backup(&origin_kv)
}
}
What it taught us

A backup taken while running must capture a consistent state rather than lock the store or read it mid-write.

It is the same rule we apply to client data backups.

Other projects with our changes: Rust

6 projects in this technology have our merged changes. The bar is the repository's stars, next to it the number of our changes. Each row leads to the project's page.

Questions about our changes to Sonic

Where these changes come from, who merged them and whether we can fix something in your library.

Using Sonic in your project?

If something in it does not work, we fix it at the source and leave a workaround until the release. We reply within an hour.