Skip to content

Leap v3.2.1

Compare
Choose a tag to compare
@stephenpdeos stephenpdeos released this 19 Jan 23:42
· 5211 commits to main since this release
3f9cb99

This patch release contains SHiP stability fixes, several additional bug fixes, test fixes, logging improvements, and documentation updates.

Leap v3.2.1 Release Notes

Bug fixes

SHiP stability fixes

PRs

  • (624)[3.2] Backport SHiP fixes from eosio/eos release/2.2.x


State History Plugin (SHiP) stability issues were reported with the release of Leap v.3.2.0 where it would crash under heavy load. This has been resolved with a backport of state_history_plugin fixes.

From the backport:

  • Create an additional thread for all ship network communication. This thread already existed in release Leap v3.2.0 but was not used.
  • Fix bug where state_history_plugin would send blocks with block_num smaller than the client requests when the state history block head is behind the block head of the client.

Additional changes:

  • Remove session_manager_t and use post to main thread so session_set is only accessed from main thread.
  • Use named_thread_pool to simplify SHiP thread. Older versions of boost do not provide an acceptor that takes a strand in constructor, so rely on implicit strand of single thread running io_context which is much simpler than wrapping all calls in boost::asio::bind_executor.
  • The destructor of boost beast web socket stream is called on the SHiP thread.

Interrupt speculative block start_block when a production block is received

PRs

  • (648)[3.1 -> 3.2] Interrupt speculative start_block when a block is received


Block propagation has been improved under high load by exiting a speculative block start_block when a production block comes into the node and its block header is validated. This allows the block to be processed immediately after the execution of the current transaction.

Previously, for a speculative block, an incoming block would not be processed until the main thread was released from processing the backlog of pending transactions that fit with the completion of start_block. This could delay the incoming block processing by as much as 500ms.

Attempt connection retry for duplicate connections

PRs

  • (615)[3.1 -> 3.2] Attempt connection retry for duplicate connections


When syncing from one peer a sync wait timeout could cause the connected peer to determine the reconnect was a duplicate. This prevented reconnection and required a manual disconnect/reconnect to reestablish the connection.

A previous fix for this corner case did not address that no_retry is was redundantly being checked in connect. This duplicate check has been removed because connect is only called from resolve_and_connect where the no_retry is already verified.

Add validation of plugin configuration for deep-mind

PRs

  • (504)[3.1 -> 3.2] Added validation of plugin configuration for deep-mind


Previously there was no enforcement that when deep-mind was enabled that p2p-accept-transactions and
api-accept-transactions be disabled. There is now validation that throws an error when configured incorrectly.

Further details on changes since last release

Contributors

Special thanks to the contributors that submitted patches for this release:

Full list of changes since last release

PRs

  • (504)[3.1 -> 3.2] Added validation of plugin configuration for deep-mind
  • (534)[3.1 -> 3.2] Test nodeos_forked_chain_test: Fix race on kill of bridge node
  • (559)[3.1 -> 3.2] Do not run maintenance task on shutdown
  • (566)[3.2] Fix Test: Specify a large time limit for cleos get table
  • (587)[3.2] Fixes Producer Plugin Schema Fixes and Better Alignment with OpenAPI spec
  • (595)[3.1 -> 3.2] Update nodeos options help usage [docs]
  • (615)[3.1 -> 3.2] Attempt connection retry for duplicate connections
  • (624)[3.2] Backport SHiP fixes from eosio/eos release/2.2.x
  • (648)[3.1 -> 3.2] Interrupt speculative start_block when a block is received
  • (653)[3.1->3.2] Merge release 3.1.4 version bump
  • (657) [3.2] bump Leap version to v3.2.1


Full Changelog: v3.2.0...v3.2.1