improve: AttestationStatusWatch::next_batch_to_attest non-optional (BFT-496) #165
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.
What ❔
AttestationStatusWatch
must be initialised with aBatchNumber
, it cannot haveNone
any more.AttestationStatusRunner::new
was replaced with theAttestationStatusRunner::init
method which asynchronously polls the API until the first value is returned, and then returns itself along with theAttestationStatusWatch
it created. This can then be passed to theExecutor
, while theAttestationStatusRunner::run
will keep the status up to date in the background.Why ❔
In the review of #161 it was observed that the
Executor
can wait until this data is available. In theory it is only unavailable if the main node API is down, in which case an external node couldn't pull Genesis either and would probably fail during startup, or if the Genesis itself is still under construction in the database, which is a transient state under which an external node as mentioned would not start, and apparently the main node doesn't need theExecutor
to get over it. By removingNone
as an option fornext_batch_to_attest
the state is easier to reason about.