Skip to content

Make plus.disaster_recovery the only key and drop sftp - #1040

Merged
epompeii merged 1 commit into
develfrom
u/ep/s3-r2/disaster-recovery
Oct 4, 2026
Merged

epompeii merged 1 commit into
develfrom
u/ep/s3-r2/disaster-recovery

Conversation

@epompeii

@epompeii epompeii commented Sep 18, 2026 •

Copy link
Copy Markdown
Member

The continuous replication section of the server config was named plus.litestream in code, with disaster_recovery accepted only as a serde alias, while the docs have always named it plus.disaster_recovery. This makes the documented key the only key, drops the unused sftp replica scheme, and fixes the docs example, which showed a replicas array the code never accepted and did not parse as JSON.

Changes

  • JsonPlus.litestream becomes disaster_recovery: Option<JsonDisasterRecovery>; the alias is gone. The code that runs the Litestream binary keeps its Litestream names, since that is the vendor it drives.
  • JsonReplica::Sftp and its YAML mapping are removed, so the section reads scheme: file | s3.
  • Docs in all 9 languages drop the sftp scheme; the shared config example shows a single replica and loses the trailing comma after logging that kept it from parsing.
  • Tests pin that disaster_recovery deserializes, that an sftp replica fails with an unknown variant error, and that a leftover litestream key is ignored.

Breaking changes

  • A config that still uses plus.litestream is ignored, so disaster recovery does not run at all: no restore at startup and no replication. Rename the key to plus.disaster_recovery.
  • The sftp replica scheme is removed. file and s3 remain. A config that still uses sftp fails to load.

First of a stack of three: this, then removing the on demand backup endpoint, then moving the container registry storage onto object_store with the same scheme: file | s3 config shape.

@github-actions

github-actions Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

馃惏 Bencher Report

ProjectBencher
Branchu/ep/s3-r2/disaster-recovery
Testbedintel-v1
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
microseconds (碌s)
(Result 螖%)
Upper Boundary
microseconds (碌s)
(Limit %)
Adapter::Json馃搱 view plot
馃毞 view threshold
5.34 碌s
(+5.85%)Baseline: 5.04 碌s
6.15 碌s
(86.86%)
Adapter::Magic (JSON)馃搱 view plot
馃毞 view threshold
5.14 碌s
(+5.63%)Baseline: 4.87 碌s
5.82 碌s
(88.41%)
Adapter::Magic (Rust)馃搱 view plot
馃毞 view threshold
26.74 碌s
(-0.76%)Baseline: 26.94 碌s
30.13 碌s
(88.76%)
Adapter::Rust馃搱 view plot
馃毞 view threshold
4.68 碌s
(+8.20%)Baseline: 4.32 碌s
6.64 碌s
(70.41%)
Adapter::RustBench馃搱 view plot
馃毞 view threshold
4.66 碌s
(+8.01%)Baseline: 4.32 碌s
6.63 碌s
(70.28%)
馃惏 View full continuous benchmarking report in Bencher

@epompeii
epompeii added this pull request to stack #1042 September 18, 2026 06:48
@epompeii
epompeii marked this pull request as ready for review September 18, 2026 06:48
@epompeii
epompeii marked this pull request as draft October 1, 2026 02:26
@epompeii
epompeii force-pushed the u/ep/s3-r2/disaster-recovery branch from 46b029b to 84cc308 Compare October 1, 2026 05:10
@epompeii
epompeii marked this pull request as ready for review October 1, 2026 05:42
The continuous replication section was named plus.litestream in code,
with disaster_recovery only as a serde alias, while the docs named
plus.disaster_recovery. Rename the type and field to the documented key
and drop the alias. Also drop the unused sftp replica scheme, so the
section reads scheme: file | s3, and fix the docs example, which showed
a replicas array the code never accepted.
@epompeii
epompeii marked this pull request as draft October 3, 2026 19:02
@epompeii
epompeii force-pushed the u/ep/s3-r2/disaster-recovery branch from 84cc308 to afa562d Compare October 3, 2026 19:03
@epompeii
epompeii marked this pull request as ready for review October 4, 2026 16:44
@epompeii
epompeii merged commit 34d7a64 into devel Oct 4, 2026
64 checks passed
@epompeii
epompeii deleted the u/ep/s3-r2/disaster-recovery branch October 4, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant