Leap v3.2.1
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
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 withblock_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 sosession_set
is only accessed from main thread. - Use
named_thread_pool
to simplify SHiP thread. Older versions of boost do not provide anacceptor
that takes astrand
in constructor, so rely on implicit strand of single thread runningio_context
which is much simpler than wrapping all calls inboost::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
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
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
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