We can successfully upgrade both locally running and Rococo parachains with Sudo, but when I try upgrading a local parachain using the referenda system, it fails. I am submitting these extrinsics as Council external proposals. The authorizeUpgrade
is successful, however, enactAuthorizedUpgrade
fails with parachainSystem.ValidationDataNotAvailable.
I am seeing events democracy.PreimageUsed
, followed by:
democracy.Executed
refIndex: u32
6
result: Result<Null, SpRuntimeDispatchError>
Err: DispatchError
{
Module: {
index: 1
error: 0x03000000
}
}
type
parachainSystem.ValidationDataNotAvailable
followed by:
scheduler.Dispatched
Dispatched some task.
task: (u32, u32)
u32
284
u32
0
id: Option<Bytes>
0x64656d6f6372616306000000
result: Result<Null, SpRuntimeDispatchError>
Ok
When I look through the code it's not obvious how and where the validation data gets stored or is expected to be stored. When it's done via Sudo, I see events for parachainSystem.ValidationFunctionStored
and parachainSystem.ValidationFunctionApplied
that I never see during the referendum process. Why would this be different?
We're running substrate version 0.9.29 right now. I'm not sure what other information I should post, since the actual Democracy part itself is working fine. Our Democracy and Collectives configurations are nearly the same as defaults for Polkadot so we're not doing anything special. There are no runtime configurations for the cumulus dependencies. Please let me know what else is needed to help, and I'll update this question.