We experienced an issue where we had a motion open before upgrading our runtime, after this upgrade this motion became "uncloseable". When inspecting the chainstate for the council, specifically the proposalOf of the open motion we get:

council.proposalOf: Option<Call>

This motion became unclosable via the polkadot js UI. All subsequent proposals do as well. This motion is not expired and has enough votes to be closed but yet when we try to close it manually we get: proposalMissing. The error is returned from the frame code here: https://github.com/paritytech/substrate/blob/ba6649b262b5d0f937ddd9fb30be1ffd9548278b/frame/collective/src/lib.rs#L889

I think proposals should be closable when they are either expired or not AND they have enough votes even though the attached call is missing. In this case, the proposal should be closed and not executed and removed from storage.

  • The <unknown> usually means that some storage type has been changed without a proper migration. Aug 2 at 7:36
  • Inbetween runtime upgrades we removed a pallet which reordered the runtime definition. Could this be the cause? Aug 2 at 8:16
  • Yes, if you swapped the pallet indexes for example. The pallet storage uses the pallet index to make sure keys are unique. Aug 2 at 10:33
  • Okay. how can I remove a pallet from my runtime definition without breaking related storage? Aug 2 at 10:56
  • You can either never use the same pallet index again, or you will to clear the pallet storage first. substrate.stackexchange.com/questions/3288/… Aug 2 at 11:15


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.