Repository navigation
chore(deps): bump turso 0.7.2 -> 0.8.2 - #46
Merged
Merged
Conversation
Bumps the exact Turso pin to 0.8.2, the latest stable (ephpm#535). No
litewire code change was needed; the workspace builds, lints and tests
cleanly on it, MSRV 1.88 included.
What changed upstream that reaches litewire or its embedders:
- PRAGMA journal_mode changes are refused on a connection with CDC capture
on. 0.7.2 accepted WAL -> MVCC there, and upstream documents that capture
then stopped silently. New test
journal_mode_change_on_a_capturing_connection_is_refused pins it (fails
on 0.7.2, passes on 0.8.2).
- The turso binding now gates each connection: execute_batch and the new
batch/transactional_batch need exclusive use and return
"connection is busy with another operation" while a Rows from the same
connection is unfinished; a query/execute during a batch fails with
"connection is busy executing a batch". litewire calls none of these.
- TransactionBehavior gained Concurrent; Builder::with_io takes
impl Into<IoBackend>.
File format and the turso_cdc schema ("v2") are unchanged. Checked with a
two-binary probe (turso 0.7.2 and 0.8.2 builds): 0.7.2 files open under
0.8.2 with integrity_check ok, rows and indexes intact, and change_id
continuing monotonically; a crash image with an uncheckpointed 0.7.2 WAL
recovers; CdcTailer + apply_batch replay the whole mixed 0.7.2/0.8.2 log to
an identical replica; 0.8.2 files open under 0.7.2.
|
ePHPm Preview — removed Preview deployment has been torn down. |
|
ePHPm Preview — deployed (health check pending)
Preview updates automatically on each push to this PR. |
This branch was successfully deployed
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.
Bumps the exact Turso pin from
=0.7.2to=0.8.2, the latest stable release (ephpm/ephpm#535). The ePHPm side follows in a separate PR that points its litewirerevat this branch. Do not merge without review: Turso is the database engine, and clustered CDC in ePHPm is experimental.What changed
Cargo.toml: pin bumped, with a comment listing what the bump changes.Cargo.lock: the nineturso*crates move to 0.8.2, andantithesis_sdkmoves from 0.2.9 to 0.3.0.journal_mode_change_on_a_capturing_connection_is_refused(crates/litewire-turso/tests/cdc_replication.rs). It fails on 0.7.2 and passes on 0.8.2.docs/architecture.md, thelitewire-tursocrate docs and CHANGELOG now give the new pin.Upstream changes from 0.7.2 to 0.8.2 that matter here
I diffed the
tursoandturso_corecrate sources and read the 0.8.0 changelog. 0.8.1 and 0.8.2 contain only CI changes.journal_modeis refused while CDC capture is on. Turso only supportswalandmvcc; other modes are silent no-ops. On 0.7.2, a capturing connection accepted a switch from WAL to MVCC, and per upstream, capture then stopped silently while the pragma still reported it as on. Writes after that would not replicate. 0.8.0 returnscannot change journal_mode (...) while CDC capture is active. This is a fix.Connection::execute_batchand the newbatch/transactional_batchtake the connection exclusively.Rowsfrom the same connection (or a clone of it) is still being read, they fail withMisuse("connection is busy with another operation").queryorexecutethat starts during a batch fails withconnection is busy executing a batch.execute_batchon a dedicated connection.TransactionBehavior::Concurrent(this breaks exhaustive matches; litewire has none),Builder::with_io(impl Into<IoBackend>),Builder::read_only, andError::BatchStatementFailed/Error::BatchRollbackFailed.turso_core::cdcmodule. Theturso_cdc/turso_cdc_versionschema is unchanged (versionv2, same columns andchange_typevalues), and DDL is still captured assqlite_schemarow changes.PRAGMArow ids reset on each scan; a database with a garbage header is reported as "file is not a database"; an MVCC+CDC panic on an emptyCOMMITis fixed.Database file compatibility (tested)
I built a probe twice, once against turso 0.7.2 and once against 0.8.2. The two
turso_coreversions export clashing#[no_mangle]symbols, so they cannot share one binary. Each run wrote an ePHPm-shaped database: CDCfull, a table with an index, TEXT/REAL/BLOB data, an UPDATE, a DELETE and a metadata table.integrity_checkok, 299/299 rows (table and index agree), 612turso_cdcrows, versionv2change_idcontinues 612 → 718 (still monotonic)CdcTailer+apply_batchover the mixed 0.7.2/0.8.2 log-wal, copied while open, opened by 0.8.2integrity_checkok, all rows, writes and tail/apply workintegrity_checkok, rows intactVerification
All of these ran on Windows with toolchain 1.99:
cargo fmt --all -- --check: clean.cargo clippy --workspace --all-targets [--all-features] -- -D warnings: clean.cargo +1.88 check --workspace --all-features --all-targets(MSRV): ok.cargo deny check: advisories, bans, licenses and sources all ok.cargo test --workspace [--all-features]: everything passes except one test,litewire/tests/mysql_multi_tenant.rs::single_tenant_attach_keeps_working_over_the_wire. It also fails onmainwith turso 0.7.2 on Windows, so it is not caused by this bump. The test uses the rusqlite backend, and a Windows temp path inside a MySQL string literal loses its backslashes, soATTACHopens a different file. It does not reproduce on Linux CI paths.