Commit Graph
23 Commits
Author SHA1 Message Date
LldenauroisandBernhard Schuster f7564591e7 Add tests to ensure session is set correctly in OnChainScrapingVotes (#4821)
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
2022-02-02 18:40:21 +01:00
23ee153e74 Refactor check_validation_outputs (#4727)
* Move PersistedValidationData check into

* Address feedback

* Remove incorrect comment

* Update runtime/parachains/src/inclusion/mod.rs

* fmt

* Add logging

Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: Andronik <write@reusable.software>
2022-01-28 11:21:28 +01:00
Lldenaurois 2243121401 Revert "remove provisioner checks (#4254)" (#4375)
* Revert "remove provisioner checks (#4254)"

This reverts commit d5d916a915.

* Remove TODO in implementer's guide
2021-11-30 11:01:55 +00:00
Lldenaurois e35ebee0f1 Replicate Rob's PR (#4337) 2021-11-20 12:36:23 +01:00
Lldenaurois 99728aaca2 Remove sort_unstable_by (#4314) 2021-11-17 18:51:42 +00:00
Lldenaurois d59ef49195 Move runtime to with_transaction in order to Rollback state changes (#4067)
* Move runtime to with_transaction in order to Rollback state changes

* add assert_storage_noop to tests
2021-10-12 20:09:48 +00:00
Lldenaurois e49a43ba05 Update logging in paras_inherent (#3927) 2021-09-24 20:44:45 +02:00
LldenauroisandAndronik Ordian 608ad0f6bf Add info logging to dispute activation (#3870)
* Add info logging to dispute activation

* Update node/core/dispute-coordinator/src/real/mod.rs

Co-authored-by: Andronik Ordian <write@reusable.software>

Co-authored-by: Andronik Ordian <write@reusable.software>
2021-09-16 20:34:10 +00:00
Lldenaurois 2bd84151ed Add tests and modify as_vec implementation (#3715)
* Add tests and modify as_vec implementation

* Address feedback

* fix typo in test
2021-09-06 13:24:04 +02:00
Lldenaurois 84d89475a5 Enable disputes on rococo (#3764) 2021-09-02 16:51:00 -05:00
Lldenaurois 353cfc8e37 node/service: Update finality target to fix disputes tests (#3732) 2021-08-27 11:59:09 -04:00
Lldenaurois 9b45483cb1 backing-availability-audit: Move ErasureChunk Proof to BoundedVec (#3626)
* backing-availability-audit: Move ErasureChunk Proof to BoundedVec

* WIP

* Touch up

* Fix spelling mistake

* Address Feedback
2021-08-24 12:50:33 -04:00
Lldenaurois 86f14eed07 node/approval-voting: Continue to migrate tests to subsystem tests (#3471)
* node/approval-voting: Continue to migrate tests to subsystem tests

* node/approval-voting: Continue to implement subsystem tests.

* Add more tests

* node/approval-voting: Add more tests

* node/approval-voting: Difficuly determining the proper test scenario for threshold tests

* node/approval-voting: Introduce should_trigger_assignment tests

* node/approval-voting: Finalize threshold tests

* node/approval-voting: Address Feedback and add comments

* node/approval-voting: Tidy up approval tests

* Tidy up tests

* Fix rustfmt
2021-08-04 11:49:21 -04:00
Lldenaurois 1858ff57fc Dispute coordinator - Recover disputes on startup (#3481)
* node/dispute-coordinator: Introduce resume capability

This commit introduces a resume capability for the
dispute coordinator subsystem. Specifically, this will allow
to recover data for disputes for which we have no local statements.

* node/dispute-coordinator: Add resume function to TestState and modify Harness

This commit modifies the TestHarness to return a TestState. We subsequently
define a resume function on TestState that allows to interrupt the test and
test specifically for behavior on startup of the subsystem.

* node/dispute-coordinator: Implement resume functionality

This commit implements the resume functionality for the subsystem.
In addition, we will forward any DisputeParticipation::Participate
message in order to ensure that disputes for which we do not have
local statements may be recovered in due time.

* Address Feedback

* Modify to run handle_leaf on first import

* Modify missing_local_statement logic

* node/dispute-coordinator: Add simple test to ensure we adequately
handle local_statements that are not missing.

* Add missing keystore tests
2021-07-21 16:36:43 -05:00
Lldenaurois dc0927787e Dispute coordinator overlay (#3462)
* node/dispute-coordinator: Modify db to return SubsystemResult.

In preparation of moving to the overlayed backend pattern, this commit
moves the db to return SubsystemResult values.

* node/dispute-coordinator: Add the Backend and OverlayedBackend.

This commit adds the backend and overlayed backend structs to the
dispute-coordinator subsystem.

* node/dispute-coordinator: Implement backend and overlayed-backend.

This commit finalizes the move from the previous transactional model
to the common overlay pattern in subsystem persistency. This can be
observed in the ApprovalVoting and ChainSelection subsystems.

* Add module docs + license

* Touchup merge
2021-07-12 23:42:51 -04:00
Lldenaurois 2d66b8f256 Dispute Coordinator: Batch queries (#3459)
* disputes: Allow batch queries in dispute-coordinator

This commit moves to batch queries when responding to QueryCandidateVotes
messages. This simplifies the code in the provisioner and dispute-coordinator
by no longer requiring to make use of a FuturesOrdered when awaiting multiple
quries. Instead, the provisioner need only request the batch itself.

* node/approval-voting: Address Feedback to fail on query element missing.

* Address feedback

* Fix implementer's guide
2021-07-12 20:06:14 -05:00
Lldenaurois 2510bfc5d7 Approval voting full subsystem tests (#3391)
* node/approval-voting: Introduce Backend trait and Overlaybackend

This commit introduces a Backend trait and attempts to move away
from the Action model via an OverlayBackend as in the ChainSelection
subsystem.

* node/approval-voting: Add WriteOps for StoredBlockRange and BlocksAtHeight

* node/approval-voting: Add load_all_blocks to overlay

* node/approval-voting: Get all module tests to pass.

This commit modifies all tests to ensure tests are passing.

* node/approval-voting: Address oversights in the previous commit

This commit addresses some oversights in the prior commit.

1. Inner errors in backend.write were swallowed
2. One-off write functions removed to avoid useless abstraction
3. Touch-ups in general

* node/approval-voting: Move from TestDB to dyn KeyValueDB

This commit removes the TestDB from tests.rs and replaces it with
an in-memory kvdb.

* node/approval-voting: Address feedback

* node/approval-voting: Add license to ops.rs

* node/approval-voting: Address second-pass feedback

* Add TODO

* node/approval-voting: Bump spec_version

* node/approval-voting: Address final comments.

* node/approval-voting: Introduce framework for full subsystem tests

* node/approval-voting: Introduce basic tests to attempt to provide
coverage via full subsystem tests

* node/approval-voting: Introduce Chainbuilder
2021-07-08 12:30:12 -04:00
Lldenaurois 7313e485d0 Approval voting overlay db (#3366)
* node/approval-voting: Introduce Backend trait and Overlaybackend

This commit introduces a Backend trait and attempts to move away
from the Action model via an OverlayBackend as in the ChainSelection
subsystem.

* node/approval-voting: Add WriteOps for StoredBlockRange and BlocksAtHeight

* node/approval-voting: Add load_all_blocks to overlay

* node/approval-voting: Get all module tests to pass.

This commit modifies all tests to ensure tests are passing.

* node/approval-voting: Address oversights in the previous commit

This commit addresses some oversights in the prior commit.

1. Inner errors in backend.write were swallowed
2. One-off write functions removed to avoid useless abstraction
3. Touch-ups in general

* node/approval-voting: Move from TestDB to dyn KeyValueDB

This commit removes the TestDB from tests.rs and replaces it with
an in-memory kvdb.

* node/approval-voting: Address feedback

* node/approval-voting: Add license to ops.rs

* node/approval-voting: Address second-pass feedback

* Add TODO

* node/approval-voting: Bump spec_version

* node/approval-voting: Address final comments.
2021-07-08 15:00:57 +00:00
Lldenaurois 777499dc69 Approval Checking: Avoid redundant checks (#3306)
* node/approval-voting: Introduce LruCache for pending Approval work

This commit adds an LruCache that is intended to track the approval work
submitted as background tasks in order to ensure that the validator needn't
launch duplicate approval work for the same candidate across multiple blocks.
A simple state machine is also introduced in order to differentiate pending
and completed tasks. In addition, this LruCache will retain ValidationResults
from the completed approval work once the task has completed. As per LruCache
implementation, the oldest tasks will get evicted as new approval work is
submitted to this cache.

* node/approval-voting: Revert changes to master

This commit reverts changes from the previous commit in order
to simplify addressing the architecture discussion raised in the PR.

* node/approval-voting: remove background task mpsc construct

This diff removes the mpsc construct for background tasks in preparation
for a move to leveraging RemoteHandles to launch approvals, rather than
passing ApprovalRequests to a mpsc channel and handling the ApprovalRequests
in the main subsystem task.

* node/approval-voting: Introduce LRU Cache

This commit introduces an LRU Cache but does not yet make use of it.

* node/approval-voting: Remove BackgroundTasksMap and memoize currently_checking

This commit removes the BackgroundTasksMap in the main subsystem task
and introduces a method to keep track of RemoteHandles in such a way that
we can ensure that a task is spawned once for a CandidateHash and
relay parent tuple.

* node/approval-voting: Remove BackgroundTasksMap and memoize currently_checking

This commit removes the BackgroundTasksMap in the main subsystem task
and introduces a map of FuturesUnordered per BlockNumber. In addition,
a FusedFuture is generated by iterating across all FuturesUnordered for
the BlockNumbers for which at least one candidate has approvals work
running in the subsystem.

* node/approval-voting: Address Rob's comments

This diff removes the prior HashMap<BlockNumber, FuturesUnordered>
construction and instead moves to a simple FuturesUnordered where
all the work is await with Timeout.

* node/approval-voting: Update Cargo.lock

Due to a mismatch in rustc versions

* node/approval-voting: Make use of actions when issuing_approval

This commit fixes a small oversight in the logic of the prior commit.

* node/approval-voting: Address Rob's feedback

* node/approval-voting: Introduce lazy launch_approval evaluation

* node/approval-voting: Send DistibruteApproval message on every LaunchApproval

In addition to fixed the DistributeApproval bug, this commit also
increases the size of the approvals cache and ensures the StaleGuard
is removed when the advantageous approval state is reached.

* node/approval-voting: Address final comments

This commit removes the CandidateIndex from the ApprovalVoteRequest.
Instead, the launch_approval function will compute the candidate_index
from the block entry.

In addition, a comment has been added explaining the difficulty of
issuing approvals in the handle_actions function.

* node/approval-voting: Set timeout to be 120s rather than 2s

* Update Cargo.lock
2021-06-22 23:24:28 +00:00
Lldenaurois 5c16c95bd5 Follow-up PR: Count no-shows (#3309)
* node/approval-voting: test for invalid validator index in assignments

This commit adds a unit test to show that, currently, validator indexes
greater than n_validators (or the length of the approvals bitvector) are
counted in n_assignments. In the subsequent commit we will correct this
behavior.

* node/approval-voting: ignore invalid validator indexes in n_assignments

This commit ignores any validator assignments whose index is beyond
n_validators. Without this check, an improperly crafted assignment would
be counted towards the approval.

It still remains that n_assignments and count_no_shows inspect the
number of validators and approvals, respectively. Ideally we would
add greater safety around ensuring these two values cannot differ.
2021-06-19 00:27:02 +00:00
Lldenaurois f8ed46f455 Extract and test count_no_shows method for approval voting (#3264)
* node/approval-voting: extract and test count_no_shows method

This commit extracts no_show computation into a pure function so that it can be
extensively unit tested.

* node/approval-voting: ignore invalid validator indexes in count_no_show

Previously indexes that were past the length of the approvals bitvector
would contribute to the no_show count or the next_no_show value. This
commit changes the behavior to ignore garbage values.

* node/approval-voting: add comment for next_no_show adding clock_drift
2021-06-17 21:05:18 +00:00
Lldenaurois 0da70dfa88 Approval checking unit tests (#3252)
* node/approval_checking: break out filled_tranch_iterator method

In the subsequent commit, we will begin to test this method in
isolation.

* node/approval-voting: fix tranche back-filling algorithm

Previously, this algorithm would generate duplicate, empty entries for
tranches (1..pre_end). This is caused because the initial value (0) for
gap_end is treated as the end of a prior tranche that wasn't actually
processed. The first pass thus would add (1..tranche) empty entries, in
addition to the (0..pre_end) empty entries chained at the end of the
method.

This is fixed by using the current tranche as the gap_start for the
first iteration, ensuring that the approval_entries_filled only produces
entries in the range (pre_end..post_start).

* Address feedback
2021-06-16 17:24:12 +00:00
Lldenaurois 2abaca3a8c Remove candidate selection (#3148)
* Create validator_side module

* Subsume Candidate Selection

* Add test to ensure candidate backing logic is correct

* Ensure secondings are adequately cleaned up and address test flakyness

* Address Feedback
2021-06-08 14:07:19 -04:00