Repository navigation
sqlx-sqlite: relax libsqlite3-sys constraint to allow 0.38.x - #4402
Merged
Merged
Conversation
wesbillman
pushed a commit
to block/buzz
that referenced
this pull request
Sep 24, 2026
## Summary Upgrade Buzz from MeshLLM `v0.76.0-rc9` to the latest stable [v0.76.2 release](https://github.com/Mesh-LLM/mesh-llm/releases/tag/v0.76.2) (via v0.76.1). - Update all eight Mesh git dependencies across desktop and relay smoke examples; both lockfiles resolve all 47 Mesh packages to `a0c1e66b0ac037dd56544b9e2d94969ea43d694f` (tag `v0.76.2`). All non-Mesh lock records are unchanged by the 0.76.1 → 0.76.2 bump. - Match Mesh's `ed25519-dalek = 3.0.0` and `rusqlite = 0.40` dependencies. - Explicitly enable rusqlite's `fallible_uint` feature, preserving Buzz's existing `u64` SQL conversions when **mesh is disabled**. Mesh-enabled builds previously supplied this transitively, so testing both configurations matters. - Temporarily pin **only** the optional `sqlx-sqlite` package to the merged upstream compatibility fix [transact-rs/sqlx#4402](transact-rs/sqlx#4402), revision `94aafe3a68884d923b0798a767c8d7f6cfda89d2`. SQLx 0.9.0 caps `libsqlite3-sys` below 0.38, while Mesh 0.76 requires 0.38. Cargo resolves the conflict even with SQLite disabled. The fix raises that upper bound; remove the patch once released. Buzz's active PostgreSQL driver stays on crates.io SQLx 0.9.0. - Preserve the explicit Linux keyring 3 `crypto-rust` feature so Secret Service sessions retain DH encryption independently of Mesh keyring 4. - Preserve the dedicated examples-only `buzz-mesh-smoke` crate and lifecycle workflow wiring, keeping Mesh/native-runtime dev dependencies out of relay CI builds. - v0.76.1 → v0.76.2 upstream delta: self-updater fix for composed product-v2 bundles (Mesh-LLM/mesh-llm#1844) plus release plumbing — no API changes affecting Buzz. - Merged `origin/main` (`7c789dee0`) without rewriting shared PR history. ### Validation at `ae4adba15` (local macOS ARM64, Hermit toolchain) - **Passed:** `cargo test --locked -p buzz-mesh-smoke --all-targets` (all six example harnesses compile; no live harness execution). - **Passed:** desktop Tauri workspace tests, both default and `--features mesh-llm` graphs (3,296 tests with mesh enabled, 0 failures). - **Passed:** `just desktop-tauri-clippy` (both feature graphs, `-D warnings`), root workspace clippy `-D warnings`, `cargo fmt --all --check`. - **Passed:** `--locked` metadata resolution for both workspaces; lockfile diff audited to touch only Mesh package records. - **Passed:** full pre-push hook suite on the final push (branch-skew, rust-tests, desktop-tauri-checks, file-size-check) — no hooks bypassed. - **Not run:** live Mesh inference/admission smoke or installed-app UI exercise. CI lifecycle smoke coverage applies. Originating Buzz conversation: buzz://message?channel=dffbc117-845a-4c02-bc3f-eaeeefc4deaa&id=670f9c262e1ec0a4df5600b3173a0c5de2abe17e08ba9ccfdd8eff109fadf1a8 --------- Signed-off-by: Thinker <75d8a808fa21bb8d1812e080cf471db601c6e8e6a62dcd516d37531e83a7bb77@meshllm.communities.buzz.xyz> Signed-off-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Thinker <75d8a808fa21bb8d1812e080cf471db601c6e8e6a62dcd516d37531e83a7bb77@meshllm.communities.buzz.xyz> Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Galadriel <b81c841ed20a8e17caf4e6fac2f6f3bc61d304c84b8394720f6d00f37538c47e@meshllm.communities.buzz.xyz> Co-authored-by: Gu <gu@buzz>
abipalli
pushed a commit
to abipalli/buzz
that referenced
this pull request
Oct 7, 2026
Upgrade Buzz from MeshLLM `v0.76.0-rc9` to the latest stable [v0.76.2 release](https://github.com/Mesh-LLM/mesh-llm/releases/tag/v0.76.2) (via v0.76.1). - Update all eight Mesh git dependencies across desktop and relay smoke examples; both lockfiles resolve all 47 Mesh packages to `a0c1e66b0ac037dd56544b9e2d94969ea43d694f` (tag `v0.76.2`). All non-Mesh lock records are unchanged by the 0.76.1 → 0.76.2 bump. - Match Mesh's `ed25519-dalek = 3.0.0` and `rusqlite = 0.40` dependencies. - Explicitly enable rusqlite's `fallible_uint` feature, preserving Buzz's existing `u64` SQL conversions when **mesh is disabled**. Mesh-enabled builds previously supplied this transitively, so testing both configurations matters. - Temporarily pin **only** the optional `sqlx-sqlite` package to the merged upstream compatibility fix [transact-rs/sqlx#4402](transact-rs/sqlx#4402), revision `94aafe3a68884d923b0798a767c8d7f6cfda89d2`. SQLx 0.9.0 caps `libsqlite3-sys` below 0.38, while Mesh 0.76 requires 0.38. Cargo resolves the conflict even with SQLite disabled. The fix raises that upper bound; remove the patch once released. Buzz's active PostgreSQL driver stays on crates.io SQLx 0.9.0. - Preserve the explicit Linux keyring 3 `crypto-rust` feature so Secret Service sessions retain DH encryption independently of Mesh keyring 4. - Preserve the dedicated examples-only `buzz-mesh-smoke` crate and lifecycle workflow wiring, keeping Mesh/native-runtime dev dependencies out of relay CI builds. - v0.76.1 → v0.76.2 upstream delta: self-updater fix for composed product-v2 bundles (Mesh-LLM/mesh-llm#1844) plus release plumbing — no API changes affecting Buzz. - Merged `origin/main` (`7c789dee0`) without rewriting shared PR history. - **Passed:** `cargo test --locked -p buzz-mesh-smoke --all-targets` (all six example harnesses compile; no live harness execution). - **Passed:** desktop Tauri workspace tests, both default and `--features mesh-llm` graphs (3,296 tests with mesh enabled, 0 failures). - **Passed:** `just desktop-tauri-clippy` (both feature graphs, `-D warnings`), root workspace clippy `-D warnings`, `cargo fmt --all --check`. - **Passed:** `--locked` metadata resolution for both workspaces; lockfile diff audited to touch only Mesh package records. - **Passed:** full pre-push hook suite on the final push (branch-skew, rust-tests, desktop-tauri-checks, file-size-check) — no hooks bypassed. - **Not run:** live Mesh inference/admission smoke or installed-app UI exercise. CI lifecycle smoke coverage applies. Originating Buzz conversation: buzz://message?channel=dffbc117-845a-4c02-bc3f-eaeeefc4deaa&id=670f9c262e1ec0a4df5600b3173a0c5de2abe17e08ba9ccfdd8eff109fadf1a8 --------- Signed-off-by: Thinker <75d8a808fa21bb8d1812e080cf471db601c6e8e6a62dcd516d37531e83a7bb77@meshllm.communities.buzz.xyz> Signed-off-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Thinker <75d8a808fa21bb8d1812e080cf471db601c6e8e6a62dcd516d37531e83a7bb77@meshllm.communities.buzz.xyz> Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Galadriel <b81c841ed20a8e17caf4e6fac2f6f3bc61d304c84b8394720f6d00f37538c47e@meshllm.communities.buzz.xyz> Co-authored-by: Gu <gu@buzz>
htian-dev
added a commit
to block/buzz
that referenced
this pull request
Nov 9, 2026
> **The pin is a temporary workaround for this week's public release. The SQLx fix is still unmerged.** > > 1. We considered a maintained fork, but repository permissions blocked it. > 2. We will move to an official SQLx release once it includes the required fixes and is verified with Buzz. Revisit the fork if needed. ## Bug https://linear.app/squareup/issue/BUZZ-656/relay-writer-pool-connections-stranded-after-a-burst-bb-public-2026-11 A short database interruption can leave the relay unable to handle database requests after traffic returns to normal. All connection slots can remain occupied even though no request is using them and PostgreSQL is idle. New requests then time out waiting for a slot. ## Cause SQLx, our database library, returns connections to the pool in a background task. If a socket stays open but stops answering, the final health check has no timeout. That task keeps its slot, and idle-connection cleanup cannot reclaim it ([#4349](transact-rs/sqlx#4349)). ## Fix Pin SQLx to [`c3735abf`](transact-rs/sqlx@c3735ab) from [PR #4407](transact-rs/sqlx#4407). After five seconds, it stops a stalled return operation, discards the connection, and frees the slot so new requests can open a replacement. Preserve the existing [transaction rollback (#4394)](transact-rs/sqlx#4394) and [SQLite compatibility (#4402)](transact-rs/sqlx#4402) fixes. Give the reader's own check four seconds so it can record its timeout before the outer deadline. ## Critical risk **This fix depends on a SQLx patch that has not been merged.** Its five-second limit affects every pool using this revision, so it can also discard slow but healthy connections and cause more reconnections. The local reproduction proves recovery from the injected failure; it does not establish production behavior. **Prevent accidental replacement:** require SQLx `=0.9.0`, disable Renovate updates for all seven crates, and fail required CI if the approved revision, lockfile source, or update restriction changes. These guards prevent version drift; they do not remove the runtime risk of the patch. An upgrade must explicitly update the policy after verifying all required fixes. ## Before and after evidence With real PostgreSQL 17.6 on macOS arm64, a proxy silenced 100 existing connections while allowing new connections. All borrowers dropped their connections; PostgreSQL showed 100 idle sessions. | Observation | Before | After | | --- | --- | --- | | Pool slots still occupied | 100 after 10 seconds | 0 after 5.008 seconds | | New work | Next checkout timed out | All 100 replacement connections served `SELECT 1` | <details> <summary>Captured before and after output</summary> **Before** ```text REPRO burst: 100 dropped borrowers, all release pings held: size=100 idle=0 active=100 REPRO burst DB sessions: [("idle", "ClientRead", 100)] REPRO burst after 10.000680583s: size=100 idle=0 active=100 REPRO burst: later checkout timed out despite PostgreSQL being healthy ``` **After** ```text REPRO burst: 100 dropped borrowers, all release pings held: size=100 idle=0 active=100 REPRO burst DB sessions: [("idle", "ClientRead", 100)] REPRO burst after 5.008456917s: size=0 idle=0 active=0 REPRO burst: all 100 replacement slots serve SELECT 1 while old sessions stay silent ``` Before evidence used Buzz `96af488d968a1ae9d961c2132bea27822735f8da` with SQLx `f1e94ec3`. After evidence used Buzz `4bfe60197e8c390a8701053228cd50c5391f37d3` with the SQLx pin committed in `f253760085e24358728fa4f4fef059ccf892157f`. These are local fault-injection results: they establish the stranded-slot mechanism and recovery, not what originally interrupted production database traffic. </details> --------- Signed-off-by: Helen Tian <htian@squareup.com> Co-authored-by: OpenAI Codex <noreply@openai.com>
GreemSC
added a commit
to Turi-Industries/Homelabus
that referenced
this pull request
Nov 9, 2026
…120) CI's **Known vulnerabilities** job is red on every branch for **RUSTSEC-2026-0459** (CVE-2026-119375): before 3.54.0, SQLite returns uninitialised page-cache memory when a database is opened beside a \`-wal\` of another page size. **It reaches Homelabus, so it is fixed rather than ignored.** \`hlb-backup\` opens each app's SQLite database together with its \`-wal\` for \`VACUUM INTO\`, and the app writes those files itself. A compromised app could therefore read memory from the backup process. **Fix.** \`libsqlite3-sys\` 0.39 bundles SQLite 3.54. sqlx-sqlite 0.9.0, the latest release, caps it at \`<0.38\`. Upstream raised that cap in two one-line commits (transact-rs/sqlx#4402, #4502) with no code change, and has not released them. \`vendor/sqlx-sqlite\` is the published 0.9.0 with that one line changed. It is wired in through \`[patch.crates-io]\` (a path, so \`deny.toml\`'s crates.io-only sources still hold) and excluded from the workspace. Once sqlx 0.9.1 pins its own sqlx-sqlite, cargo warns that the patch is unused; that is the signal to delete it. - \`libsqlite3-sys\` 0.37.0 → 0.39.1 (SQLite 3.54.1; its MSRV is 1.88) - \`REUSE.toml\` annotates the copy as MIT OR Apache-2.0, and \`LICENSES/\` gains both texts - Verified locally: \`cargo audit\` reports only the 4 warnings already allowed; \`reuse lint\` is compliant; fmt, clippy, the whole suite and \`catalog validate\` are green 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Turi Industries <contact@turi-industries.eu> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Fahed-Alhammadi
added a commit
to Fahed-Alhammadi/PassAuth
that referenced
this pull request
Nov 10, 2026
sqlx 0.9.0 caps libsqlite3-sys below 0.38, whose bundled SQLite (< 3.54) can leak uninitialized memory with a crafted -wal file. Upstream raised the bound on main (transact-rs/sqlx#4402, #4502) but has not released it (transact-rs/sqlx#4516), so patch in the published sqlx-sqlite 0.9.0 crate (checksum-verified) with only that bound raised to < 0.40, and update libsqlite3-sys to 0.39.1. The audit ignore is no longer needed. Remove crates/vendor/ and the [patch.crates-io] entry once sqlx ships the fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYwCsQKXVya4eEBDNecjy4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Does your PR solve an issue?
fixes #4379
Is this a breaking change?
no (just like #4161)