Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Fix state_subscribeRuntimeVersion for parachains #9617

Merged
merged 1 commit into from
Aug 25, 2021

Commits on Aug 24, 2021

  1. Fix state_subscribeRuntimeVersion for parachains

    The old implementation was listening for storage changes and every time
    a block changed the `CODE` storage field, it checked if the runtime
    version changed. It used the best block to compare against the latest
    known runtime version. It could happen that you processed the storage
    notification of block Y and checked the runtime version of block X (the
    current best block). This is also what happened on parachains.
    Parachains import blocks and set the new best block in a later step.
    This means we imported the block that changed the code, got notified and
    checked the runtime version of the current best block (which would still
    be the parent of the block that changed the runtime). As the parent did
    not changed the runtime, the runtime version also did not changed and we
    never notified the subscribers.
    
    The new implementation now switches to listen for best imported blocks.
    Every time we import a new best block, we check its runtime version
    against the latest known runtime version. As we also send a notification
    when the parachains sets a block as new best block, we will trigger this
    code path correctly. It moves some computation from checking if the key
    was modified to getting the runtime version. As fetching the runtime
    version is a rather common pattern, it should not make any big
    difference performancewise.
    bkchr committed Aug 24, 2021
    Configuration menu
    Copy the full SHA
    64c08b0 View commit details
    Browse the repository at this point in the history