Repository navigation
0.23.0 - 2026-09-29
What's Changed
Fixes
Dependencies
- deps: bump p256 from 0.13.2 to 0.14.0 (#128)
- deps: bump the rust-minor group across 1 directory with 21 updates (#200)
- ci: bump docker/login-action from 4.1.0 to 4.6.0 (#122)
- ci: bump dtolnay/rust-toolchain (#123)
- ci: bump docker/build-push-action from 7.1.0 to 7.4.0 (#124)
- ci: bump codecov/codecov-action from 6.0.1 to 7.1.1 (#126)
- ci: bump actions/checkout from 6.0.2 to 7.0.0 (#125)
Other
- ci: bump docker/login-action from 4.1.0 to 4.6.0 (#122)
- ci: bump dtolnay/rust-toolchain (#123)
- ci: bump docker/build-push-action from 7.1.0 to 7.4.0 (#124)
- ci: bump codecov/codecov-action from 6.0.1 to 7.1.1 (#126)
- ci: bump actions/checkout from 6.0.2 to 7.0.0 (#125)
Full Changelog: v0.22.0...v0.23.0
Release Notes
Added
backup.circuit_breaker/restore.circuit_breakerYAML settings
(enabled,failure_threshold,reset_timeout_ms,success_threshold)
so operators can tune or disable the Kafka circuit breaker for large
restores. Defaults match the previous hardcoded Kafka thresholds
(failure=5, reset=30s, success=2). The breaker remains advisory:
engines record successes/failures and log state transitions but do not
block requests when Open — transient failures are retried by
PartitionLeaderRouter. (#197)CircuitBreaker::disabled/CircuitBreaker::from_settingsand
RestoreEngine::kafka_circuit_state()for observability and tests.OffsetMapping::add_detailed_batchfor batched per-record offset mapping.
Fixed
- Restore no longer takes the shared
offset_mappingmutex once per record;
range updates and detailed pairs are applied per segment / produce batch,
cutting lock contention undermax_concurrent_partitions> 1.
(#197) PartitionLeaderRouterconnection-error retries now evict only the pool
of the broker the failed request was sent to (captured at dispatch, so a
concurrent leader change cannot make the retry drop the new leader's
healthy pool) instead of clearing every broker's pool; NOT_LEADER retries
(produce, fetch, get_offsets) refresh metadata without dropping any pool,
since the broker that answered is healthy and usually still leads other
partitions of the same run. A blip on one leader therefore no longer forces
unrelated partitions to rebuild TCP/TLS/SASL connections. Concurrent pool
rebuilds keep an already-installed full pool instead of racinginsert.
(#197)OffsetMappingdetailed mappings now stay sorted by source offset even
when a record filter maps a segment's dropped records after its survivors,
solookup_target_offsetalways takes the exact binary-search path.
Changed
- Breaking (library API):
BackupOptionsandRestoreOptionsgain
circuit_breaker: CircuitBreakerSettings;CircuitBreakerConfiggains
enabled: bool(defaulttrue). Consumers that build these structs by
literal must add the fields —..Default::default()where available. - Dependencies:
p2560.14 (RustCrypto 0.14 generation — evidence signing
and verification unchanged) and the routine minor/patch refresh of
futures,serde,rustls,object_store,hyper,regex,uuid,
tempfileand friends (#128,
#200).
Install kafka-backup-cli 0.23.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/osodevops/kafka-backup/releases/download/v0.23.0/kafka-backup-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/osodevops/kafka-backup/releases/download/v0.23.0/kafka-backup-cli-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install osodevops/tap/kafka-backupDownload kafka-backup-cli 0.23.0
| File | Platform | Checksum |
|---|---|---|
| kafka-backup-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| kafka-backup-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| kafka-backup-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| kafka-backup-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |