github ethersphere/bee v2.1.0

one month ago

v2.1.0

The Bee team is excited to announce the v2.1.0 release. πŸŽ‰

In this release, localstore transactions have been refactored to bring increased stability and performance gains.

We have also detected that some nodes have experienced the corruption of their reserves. To address this, the release introduces the new bee db repair-reserve --data-dir=... command, which will scan the node’s reserve and fix any corrupted chunks. All node operators should make sure to run this command immediately following the update.

Warning

Make sure to run the command one by one rather than concurrently for nodes which are running on the same physical disk, since running the command concurrently on multiple nodes could lead to drastic slowdowns. As is the case with all the db commands, the nodes must be stopped first.

The release also includes a new redistribution contract which introduces a limit to the number of freezes per round. The specific rate of the limit is configurable by the team. At the time of the release, the default behavior will be the same as the old contract. The goal of the new db repair-reserve command and the localstore improvements is to decrease the freezing rate so it is closer to an acceptable level, in which case the freezing limit can be left untouched.

The Bee team will also coordinate the pausing of the old contract based on a predetermined block height of the Gnosis Chain.

With this release, the endpoints under the Debug API have been also included in the main API. The Debug API will be removed entirely in the next release (v2.2.0)

For questions, comments, and feedback, reach out on Discord.

Features

  • A new redistribution contract has been released that controls the freezing limit. #240

Bug fixes

  • Fixed an error when uploading the same file with pinning multiple times. (#4638)
  • Fixed a data race in the reserve sampler which may resolve inclusion proof related errors in the redistribution game. (#4665)

Hardening

  • Localstore refactoring (#4626)
    • The same leveldb transaction is now used for both indexstore and chunkstore writes.
    • The stewardship upload endpoint now requires a valid batchID in the request header.
    • When the reserve capacity is reached, only enough chunks to fall below the capacity are evicted. Previously, the evictor would remove the entire bin of chunks belonging to a batch, without regard to how much capacity is recovered during the process. With this change, the loss of chunks belonging to shallower bins than the storage radius in the neighborhood is minimized.
    • When the radius decreases, the bins which have been evicted previously are all properly reset to re-initiate syncing.
  • Improved logging when the node is out balance for buying a batch. (#4666)

For a full PR rundown, please consult the v2.1.0 diff.

Don't miss a new bee release

NewReleases is sending notifications on new releases.