I'm trying to execute a runtime upgrade on a running parachain. I'm using the cumulus parachainSystem pallet to do, using the authorize -> enact flow.
My parachain have the contracts pallet, with the standard migration.
The steps I'm doing are the following:
- I'm just modifying the spec_version, without adding or removing any pallet.
- Then I run
cargo build --release -p <runtime pkg>
to build the new runtime blob. - To execute the authorize_upgrade, I get the smallest file generated by the command above. Which the file name is something like
<runtime pkg>.compact.compressed.wasm
- I execute the enact_upgrade call, and here is where the problem starts!
I've got mixed outputs, doing with and without the scheduler pallet.
It outputs this error first:
And it tries to collate over and over until the error
Import failed: State Database error: Too many sibling blocks inserted
start appearing.
I've tried using the scheduler already, but I'm probably doing something wrong? How can I properly set the scheduler with the auth -> enact flow, to successfully execute the runtime upgrade in the parachain?
I'm calling using sudo, like this:
The steps I'm doing:
The upgraded runtime just have the spec_version increased, no pallets removed/addded.
- Scheduled a
authorize_upgrade
call, to be executed in n+5 blocks. - Waited the execution of the n+5 block.
- After, scheduled the
enact_authorize
to be executed in n+10.
When the second scheduled call happens, it keeps starting collation until the too many siblings
error starts popping up.
Is the order right? Do I need to make a set_code call in the Parachain, before or after the auth/enact?
Import failed: State Database error: Too many sibling blocks inserted
have a look at substrate.stackexchange.com/questions/3054/… This issue is solved by github.com/paritytech/cumulus/pull/1559