Scale across the Multiverse. Build new apps, new economies, new worlds.

March 30, 2023

Release: Polaris fixes - v1.4.15

Although no flags are available for this version, the new binary mentioned here resolves an edge-case scenario that resulted in the loss of some trie nodes when stored in the DB. This issue was limited to a small batch of nodes, approximately 10 units, causing them to stop syncing with the chain. However, after a proper sync from the network, the nodes were able to recover. It is worth noting that this bug did not impact the processing of transactions or their outcomes. Instead, it affected the storage of trie nodes after the consensus had been reached on the outcome. For a more comprehensive understanding of the issue, please refer to the detailed bug description below.

  • due to our last refactoring work in the Patricia-Merkle Trie implementation, we've wrongly removed mutex protection for a critical area;
  • that area was used in the normal block processing and in the interceptors implementations (the components responsible for the pre-validation of the incoming data);
  • since there was more than 1 thread acting on the same area, due to some WAW hazards, the affected nodes ended up journalizing the wrong data to be written on disk after the block was processed;
  • affected nodes stopped syncing the chain as they were missing some trie data nodes.

The full binary release notes are published here: ​