This contains the bulk of changes from #1646 and relies on #1804. Transaction solidification should not be contained within the TransactionValidator and depending on the number of transactions required for a walk, using the checkSolidity call within the TransactionValidator, as is done in the MilestoneSolidifier, can take a significant portion of time. In order to mitigate this, the solidification and propagation logic has been placed into its own class running in its own thread independent of the validation logic. Instead of making direct calls to checkConsistency a queue is formed so as to not lock up any other threads, and the solidity of a transaction will first be checked via the view model before it is placed into the queue.
This is a step towards introducing the milestone pipeline refactoring.
Type of change
Enhancement (a non-breaking change which adds functionality)
How Has This Been Tested?
All corresponding tests pass: Regression, Unit and Synchronisation
Checklist:
[x] My code follows the style guidelines for this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
Description
This contains the bulk of changes from #1646 and relies on #1804. Transaction solidification should not be contained within the
TransactionValidator
and depending on the number of transactions required for a walk, using thecheckSolidity
call within theTransactionValidator
, as is done in theMilestoneSolidifier
, can take a significant portion of time. In order to mitigate this, the solidification and propagation logic has been placed into its own class running in its own thread independent of the validation logic. Instead of making direct calls tocheckConsistency
a queue is formed so as to not lock up any other threads, and the solidity of a transaction will first be checked via the view model before it is placed into the queue.This is a step towards introducing the milestone pipeline refactoring.
Type of change
How Has This Been Tested?
Checklist: