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.
Fixed a bug introduced in #2180
Before #2180, we were detecting when the runtime is ready by subscribing to notifications about the chain, and then reading the state again when something happens on this subscription.
This is hacky, so I replaced it with a
when_known: EventListener
that gets notified when the runtime is ready.Unfortunately, I forgot to notify this
EventListener
in case the sync service notification resets.The problematic situation is:
RuntimeService::subscribe_all
at the very beginning. The runtime service is in theFinalizedBlockRuntimeUnknown
state, and we listen for events on thewhen_ready
.RuntimeService
to reset and to re-subscribe to the sync service.FinalizedBlockRuntimeKnown
, but without notifying thewhen_ready
. This is what this PR fixes.Because some JSON-RPC functions indirectly rely on
RuntimeService::subscribe_all
, this bug causes these JSON-RPC functions to never produce any answer if they are called at the very beginning.