Chainsync pipelining fixes + EventListener and Plugin framework (WIP)#126
Draft
satran004 wants to merge 37 commits intodevelop/yaci-nodefrom
Draft
Chainsync pipelining fixes + EventListener and Plugin framework (WIP)#126satran004 wants to merge 37 commits intodevelop/yaci-nodefrom
satran004 wants to merge 37 commits intodevelop/yaci-nodefrom
Conversation
Introduced mandatory chainstate continuity checks to prevent gaps while storing blocks or headers. Enhanced recovery logic in `BodyFetchManager` for immediate resumption near the chain tip. Added robust tests for gap detection, debugging, and header/block existence validation.
Introduced a mechanism to notify the server when new blocks are stored during the STEADY_STATE phase. This ensures minimal notifications during initial sync and provides real-time updates only when the node is at the blockchain tip. Updated `PipelineDataListener` to invoke the new method in `YaciNode` for block notifications.
Refactored the first block retrieval to dynamically determine the starting point without relying on hardcoded metadata keys. Updated `BodyFetchManager` to use the new dynamic approach, ensuring compatibility across networks and enhanced syncing performance. Removed unused serialization methods and redundant metadata updates.
Deleted outdated test files including ChainStateDebugTest, ChainStateGapDetectionTest, ChainStateRecoveryTest, and HeaderGapAnalysisTest. These files are no longer relevant and contain redundant or unused code for chainstate debugging and analysis.
- Add global per-type ordering via SubscriptionOptions.priority
- Map @DomainEventListener(order) → SubscriptionOptions.priority
- SimpleEventBus keeps per-type subscriptions sorted by (priority asc, registrationSeq asc)
- Publish path remains lock-free; stable tie-break by registration order
- Async semantics
- Offload only when @DomainEventListener(async = true)
- Executor selection: use defaults.executor if provided; else shared virtual-thread executor
- Manual subscriptions: non-null executor forces async regardless of annotation
- API cleanup
- Remove DomainEventListener.concurrency and DomainEventListener.filter
- Remove SubscriptionOptions.concurrency
- Simplify PublishOptions (remove async/priority; empty builder remains)
Introduced dynamic next phase selection for sync based on the distance to the remote tip. The new logic transitions to STEADY_STATE or INITIAL_SYNC depending on whether the distance threshold (1000 slots) is met. Improved logging to include detailed phase transition and distance information.
The testDirectRocksDBChainState_HeaderTipSupport() method is now annotated with @disabled. This change might be temporary to address issues or avoid test failures during development or refactoring.
Added test logging to display events such as started, passed, skipped, and failed. Configured full exception format and enabled standard stream output for better debugging and test transparency.
Introduced SyncTipContext to facilitate sharing the latest network tip between HeaderSyncManager and BodyFetchManager. Updated the initialization and constructors of both managers to include SyncTipContext, enabling improved logging and decision-making near the network tip. This enhances synchronization accuracy and reduces redundant logging during steady-state and initial sync phases.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




No description provided.