• Sergey Pepyakin's avatar
    Do not use rely on the block initialization when calling runtime APIs (#2123) · e21f5cec
    Sergey Pepyakin authored
    
    
    * Don't initialize block when calling runtime APIs
    
    * Adapt check_validation_outputs
    
    We split the code path for the inclusion and for the commitments checking.
    
    * Slap #[skip_initialize_block] on safe runtime APIs
    
    That is, those that should not be affected by this attribute
    
    * Make `Scheduled` not ephemeral
    
    So that it is persisted in the storage and ready to be inspected
    by the runtime APIs. This is in contrast to what was before, where we
    would remove the storage entry and then rely on the scheduling performed
    by `on_initialize` again.
    
    * Add a big fat comment
    
    * Typos
    
    Co-authored-by: asynchronous rob's avatarRobert Habermeier <rphmeier@gmail.com>
    
    * Move session change to the end of the current block
    
    Previously, it was the beginning of the next block. This allows us to
    put #[skip_initialize_block]
    
    * Update tests
    
    * Fix a test in paras registrar
    
    Also refactor it a bit so the next time there are more chances this kind
    of issue is diagnosed quicker.
    
    * Add for_runtime_api to inclusion's check_validation_outputs
    
    Co-authored-by: asynchronous rob's avatarRobert Habermeier <rphmeier@gmail.com>
    e21f5cec