Skip to main content

Blockchain Release: Chain Halt Postmortem

· 2 min read

The core developers have prepared an emergency release 2021.05.29.0 to fix the Mainnet chain halt noticed around 1:00 PM PST, May 29th, 2021. This is a mandatory release for all miners on the network. Please read further for more details.

What Happened?

The team changed the election_info API in blockchain-core as part of support for Validators but missed updating the relevant API calls in miner. Surprisingly xref and dialyzer, two tools used in the Erlang ecosystem to do static analysis, didn't catch the incorrect calls either. This regression led to a chain halt as the code change broke a critical HoneyBadgerBFT recovery code path.

Timeline

  • Sat May 29 01:04:00 PM PDT 2021: The core team got a pagerduty alert that there were no new blocks after block 864000
  • Sat May 29 01:26:00 PM PDT 2021: status updated to reflect the blockchain halt and debugging.
  • Sat May 29 01:45:00 PM PDT 2021: The bug was identified as an incorrect call in miner to a critical election related function in blockchain-core, more details available in miner#797.
  • Sat May 29 02:00:00 PM PDT 2021: 2021.05.29.0 release candidate prepared for beta testing and imminent GA.

The issue was identified addressed quickly and the Consensus Group will be able to continue block production after this release.

Future Work

Bugs like these can slip through normal reviews and testing but improved test suites with better code coverage can help catch these sorts of regressions. Future regular maintenance releases will include these improvments.

Plan

We will begin beta testing 2021.05.29.0 as soon as the release is built and GA immediately after checking beta status.