Skip to content

0.23.0 - 2026-09-29

Choose a tag to compare

@sionsmith sionsmith released this 29 Sep 09:28
ea573a3

What's Changed

Fixes

  • fix(restore): circuit breaker config + stop global restore stalls (#197) (#199)

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_breaker YAML 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_settings and
    RestoreEngine::kafka_circuit_state() for observability and tests.
  • OffsetMapping::add_detailed_batch for batched per-record offset mapping.

Fixed

  • Restore no longer takes the shared offset_mapping mutex once per record;
    range updates and detailed pairs are applied per segment / produce batch,
    cutting lock contention under max_concurrent_partitions > 1.
    (#197)
  • PartitionLeaderRouter connection-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 racing insert.
    (#197)
  • OffsetMapping detailed mappings now stay sorted by source offset even
    when a record filter maps a segment's dropped records after its survivors,
    so lookup_target_offset always takes the exact binary-search path.

Changed

  • Breaking (library API): BackupOptions and RestoreOptions gain
    circuit_breaker: CircuitBreakerSettings; CircuitBreakerConfig gains
    enabled: bool (default true). Consumers that build these structs by
    literal must add the fields — ..Default::default() where available.
  • Dependencies: p256 0.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,
    tempfile and 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 | sh

Install 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-backup

Download 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