Allow fast sync to resume if chain head is not genesis but a fast sync is still in progress.
If present, use the stored pivot block header when restarting.
Extract the fast sync logic out of DefaultSynchronizer into it's own class.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Modify EthScheduler to use shutdownNow immediately instead of trying shutdown first.
EthScheduler executes a lot of tasks which wait for responses from the network and may have a significant number of tasks queued. Using shutdown would wait for all network responses and all queued tasks to complete before exiting which almost always reaches the 2 minute timeout allowed before switching to shutdownNow. All tasks have to cope with being unexpectedly terminated (as would happen with a kill -9) so there's no reason to have this extra delay.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Return world states as an optional to allow code to handle world states not be available cleanly.
A world state is considered available if it's root node is available.
Delay storing the root hash when fast syncing a world state until the download completes so it isn't considered available and skip downloading world states that are already available.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* register sub tasks in ParalellImportChainSegmentTask
* rememger and shutdown eth services in EthScheduler
Fixes#768
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
- Fixed the "Good First Issue" Link in "Your First Code Contribution" section of /CONTRIBUTING.md
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* make sure we don't put the password in the jwt payload
* Made sure password doesn't appear in jwt payload
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Add Message Frame to Pre compiled contracts
* Wire up Private Transaction Processor
* Add Privacy Precompiled contract Test
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Exceptions that serve more as flow control than error reporting should not log stack traces.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
ParallelImportChainSegmentTask, an explicitly parallel re-implementation
of PipelinedImportChainSegmentTask. Data is passed between stages
via BlockingQueues.
Pipeline stages are implemented in AbstractPipelinePeerTask and the
parent task assembles and initiates the pipeline execution.
Other changes to support this:
* Move ethTaskTimer to abstract root
* Don't use deterministic scheduler for downloader tests, this depends on explicit parallelism
* Change download segment size = 200
* Increase timeout in recoversFromSyncTargetDisconnect, the chain downloader
may stall for 10 seconds looking for an alternative target.
* Use a blocking queue instead of fixed wait period for the test peers
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
This change moves blocks out from the signed portion of the IBFT messages (Proposal, RoundChange and NewRound).
This has grossly affected the message validators and message factories - but otherwise does not affect the general behaviour of the system (other than reducing message size of the NewRound messages).
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Introduce GetReceiptsForHeadersTask to retry requests for receipts until they have all been received.
* Avoid requesting empty receipts from the network. (#802)
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Two changes:
* Stream chains now take up less vertical lines, only breaking on
stream operations.
* Long annotations that span multiple lines no longer have a dangling
parentesis and indent 4 spaces.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
With a prior change swapping header validation for block
validation in the IBFT messages, the necessity to pass in the block
header was removed - though the code remained.
This change simplifies the MessageValidatorFactory interface to only
take the chain height (rather than the full parent header).
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* fixed NC-2250 multiple name options only search for the longuest one in the toml
- replaces the name search by a filter on all possible option names
- updates tests accordingly and added test values in test configs
- some fixes like typo or using static imports on the parts I reworked
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
The IbftRoundFactory creates a MessageValidator for use within the
newly created round, however it does this bypassing the established
factory classes (MessageValidatorFactory).
This commit updates the IbftRoundFactory to use the correct API for
creating the message validator.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>