Skip to content

v3.3.0 released

Compare
Choose a tag to compare
@lni lni released this 20 Jan 03:49
· 27 commits to release-3.3 since this release

Dragonboat v3.3 is a major release that comes with new features and improvements. All v3.2.x users are recommended to upgrade.

New features

  • Pebble, which is bidirectional compatible with RocksDB, has been made the default engine for storing Raft Logs. RocksDB and CGO are no longer required.
  • Added the ability to slow down incoming proposals when the Raft Logs engine is highly loaded.
  • Added the option to get notified when proposals and config changes are committed.
  • Added a gossip service to allow NodeHosts to use dynamically assigned IP addresses as RaftAddress.
  • Added the ability to better control memory footprint.
  • Added ARM64/Linux as a new targeted platform.

Note that Pebble provides bidirectional compatibility with RocksDB v6.2.1. Existing Dragonboat applications can upgrade to v3.3 without any conversion unless a newer version of RocksDB was used. RocksDB v6.4.x has been briefly tested and it seems to be compatible with Pebble as well.

Improvements

  • Optimized the read index implementation.
  • Reduced LogDB restart delays.
  • Made LogDB configurations accessible programmatically.
  • Added protobuf workaround to allow Dragonboat and etcd to be used in the same project.
  • Fixed a few data race issues.
  • Fixed a potential Raft election deadlock issue when nodes are highly loaded.
  • Allow incoming proposals to be rate limited when LogDB is busy.
  • Simplified many aspects of the library.

Breaking changes

  • The signature of config.LogDBFactoryFunc has been changed. Your application is not affected unless it uses a custom LogDB implementation.
  • Due to lack of user interests, C++ binding is no longer supported.
  • LevelDB based LogDB is no longer supported.
  • NodeHostConfig's FS and SystemTickerPrecision fields have been moved into NodeHostConfig.Expert.