chore(deps): bump fjall from 2.11.2 to 3.1.9 - #34
Conversation
Bumps [fjall](https://github.com/fjall-rs/fjall) from 2.11.2 to 3.1.9. - [Release notes](https://github.com/fjall-rs/fjall/releases) - [Changelog](https://github.com/fjall-rs/fjall/blob/main/CHANGELOG.md) - [Commits](fjall-rs/fjall@2.11.2...3.1.9) --- updated-dependencies: - dependency-name: fjall dependency-version: 3.1.9 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
## Finding Two dependabot bumps that needed real migrations, landed together so the lockfile moves once. **snafu 0.8.9 → 0.9.2.** `snafu::Location` is now a type alias for `&'static core::panic::Location<'static>`, and std's `Location` has no public constructor. Eight manual `Location::default()` sites stop compiling with `E0599`. Note the existing `snafu-location-migrate.py` tool found **zero** matches here — it targets `Location::new(file!(), line!(), column!())`, a different shape. The fix was applied by hand. `Location::caller()` records the identical site: 0.8's `default()` was itself `#[track_caller]`, and these helper functions are not annotated, so the chain terminated at the same place either way. **Zero behaviour change** — verified by reading both crate sources, not assumed. **fjall 2.11.2 → 3.1.9.** fjall 3 swapped its vocabulary: the whole store is now `Database`, and what was `PartitionHandle` is now `Keyspace`. `persist` moved from the partition handle to the store. The data API (`insert`/`get`/`remove`) is byte-identical either side — only type names and the open/persist entry points moved. All API shapes were read from the vendored 3.1.9 source, not inferred from error text. ## The on-disk question, answered fjall 3 **does** change the on-disk format (`FormatVersion::V3`), and it **fails closed**. `Database::recover()` calls `check_version()` *before* any journal or segment-manifest recovery runs. Against a 2.x store it logs an error naming the official migration tool (`fjall-rs/migrate-v2-v3`) and returns `Err(Error::InvalidVersion(...))`. The destructive recovery path — the one that deletes segments absent from the levels manifest — is gated behind that check succeeding, so it **never runs against a 2.x-written store**. Verified at `db.rs:538-554`. Practically moot here: `thesauros`'s fjall-backed persistence dates to 2026-08-16, so a live 2.x keyspace is unlikely to exist. But if one does, it errors loudly rather than eating data. ## One correction A WHY comment claimed this pin matched "the same major version kanon's own archeion crate already uses fleet-wide". Checked against kanon `origin/main`: **archeion still pins `fjall = "2"`**. That claim is now false, so it is replaced with a NOTE flagging the divergence rather than left as stale prose. **Decision worth making separately:** either archeion takes the same bump, or the two diverge deliberately. Supersedes #35 and #34. Co-authored-by: forkwright <cody@forkwright.com>
|
Superseded and merged. The bump needed a real migration rather than a version change alone, and where several bumps touched one repo they landed together so the lockfile moved once rather than several times. CI is green on the combined branch. |
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
Bumps fjall from 2.11.2 to 3.1.9.
Release notes
Sourced from fjall's releases.
... (truncated)
Changelog
Sourced from fjall's changelog.
Commits
00a221e3.1.98485684update poisoning, closes #3087f3d975Merge pull request #312 from fzlzjerry/fix/309-snapshot-refcount6091d9dtype51d20b2visibilitybf3061aMerge pull request #310 from maxlapshin/fix/worker-thread-counter-leake4377b4fix concurrent transaction snapshot tracking2f7c596Update src/worker_pool.rs2505216fix: claim a thread slot per spawn, not the whole pool up frontc589756fix: release the active thread slot when a worker exits abnormallyDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)