The auto-generated implementation for the TryState
trait is feature gated behind try-runtime
.
This requires all pallets to support try-runtime
as well.
You can try it out for a single pallet by putting this line above the error-producing try_execute_block
:
<frame_system::Pallet<Runtime> as frame_support::traits::TryState<_>>::try_state();
This will produce an error claiming that frame_system::Pallet
does not implement TryState
. It can be fixed by adding frame-system/try-runtime
, frame-support/try-runtime
and frame-executive/try-runtime
to the try-runtime
feature list of the runtime Cargo.toml
.
Sadly it looks like some pallets that you have deployed do currently not support that feature.
They need to be updated to support the feature and propagate it to all dependencies.
The feature system of Rust is really annoying when it comes to this. We are slowly cleaning up Substrate and remove any feature-bleed; eg https://github.com/paritytech/substrate/pull/11976 and https://github.com/paritytech/substrate/pull/12341.
In this case we case it is a bit unfortunate that the pallets all need to support it. If you are really lucky you can try removing this line and do some feature hacking to maybe get it working without that.
But then you have non-production hooks in production code; also not good.