Skip to content

Zebra 1.0.0-beta.15

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 19 Sep 23:17
· 1534 commits to refs/heads/main since this release
f8ead71

This release improves Zebra's sync and RPC performance, improves test coverage and reliability, and starts creating Docker Hub binaries for releases.

It also changes some of zebra-network's unstable Rust APIs to provide more peer metadata.

Breaking Changes

This release has the following breaking changes:

  • Zebra's JSON-RPC server has an isolated thread pool, which is single threaded by default (#4806).
    Multi-threaded RPCs disable port conflict detection, allowing multiple Zebra instances to share
    the same RPC port (#5013).
    To activate multi-threaded RPC server requests, add this config to your zebrad.toml:
[rpc]
parallel_cpu_threads = 0
  • Docker users can now specify a custom zebrad config file path (#5163, #5177).
    As part of this feature, the default config path in the Docker image was changed.

  • zebrad now uses a non-blocking tracing logger (#5032).
    If the log buffer fills up, Zebra will discard any additional logs.
    Moving logging to a separate thread also changes the timing of some logs,
    this is unlikely to affect most users.

  • Zebra's gRPC tests need protoc installed (#5009).
    If you are running Zebra's lightwalletd gRPC test suite, see the tonic README for details.

Added

Releasing Zebra

  • Create Docker hub binaries when tagging releases (#5138)
  • Document how Zebra is versioned and released (#4917, #5026)
  • Allow manual Release Drafter workflow runs (#5165)

Network Peer Rust APIs

Note: Zebra's Rust APIs are unstable, they are not covered by semantic versioning.

  • Return peer metadata from connect_isolated functions (#4870)

Testing

  • Check that the latest Zebra version can parse previous configs (#5112)
  • Test disabled lightwalletd mempool gRPCs via zebrad logs (#5016)

Documentation

Changed

Zebra JSON-RPCs

  • Breaking: Add a config for multi-threaded RPC server requests (#5013)
  • Isolate RPC queries from the rest of Zebra, to improve performance (#4806)

Zebra State

  • Send treestates from non-finalized state to finalized state, rather than re-calculating them (#4721)
  • Run StateService read requests without shared mutable chain state (#5132, #5107)
  • Move the finalized block queue to the StateService (#5152)
  • Simplify StateService request processing and metrics tracking (#5137)

Block Checkpoints

  • Update Zebra checkpoints (#5130)

Docker Images

  • Breaking: Allow Docker users to specify a custom zebrad config file path (#5163, #5177)

Continuous Integration and Deployment

  • Wait 1 day before creating cached state image updates (#5088)
  • Delete cached state images older than 2 days, but keep a few recent images
    (#5113, #5124, #5082, #5079)
  • Simplify GitHub actions caches (#5104)
  • Use 200GB disks for managed instances (#5084)
  • Improve test reliability and test output readability (#5014)

Zebra Dependencies

CI Dependencies

Removed

Continuous Integration

Fixed

Logging

  • Breaking: Switch zebrad to a non-blocking tracing logger (#5032)

Testing

  • Increase full sync timeout to 32 hours (#5172, #5129)
  • Disable unreliable RPC port conflict tests on Windows and macOS (#5072)
  • Increase slow code log thresholds to reduce verbose logs and warnings (#4997)

Continuous Integration

  • Fix full sync CI failures by adding an extra GitHub job (#5166)
  • Make checkpoint disk image names short enough for Google Cloud (#5128)
  • Label lightwalletd cached state images with their sync height (#5086)

Lints

  • Fix various Rust clippy lints (#5131, #5045)
  • Fix a failure in tj-actions/changed-files on push (#5097)

Documentation

  • Enable all cargo features in Zebra's deployed documentation (#5156)

Security

JSON-RPC Server

  • Isolate RPC queries from the rest of Zebra, so that lightwalletd clients are more isolated from each other (#4806)