[FRAME] Make MQ pallet re-entrancy safe (#2356)
Closes https://github.com/paritytech/polkadot-sdk/issues/2319 Changes: - Ensure that only `enqueue_message(s)` is callable from within the message processor. This prevents messed up storage that can currently happen when the pallet is called into recursively. - Use `H256` instead of `[u8; 32]` for clearer API. ## Details The re-entracy check is done with the `environmental` crate by adding a `with_service_mutex(f)` function that runs the closure exclusively. This works since the MQ pallet is not instantiable. --------- Signed-off-by:Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by:
Francisco Aguirre <franciscoaguirreperez@gmail.com>
parent
95c3ee10
Branches
Pipeline
#423228
failed
with stages
in
1 hour, 32 minutes, and 36 seconds
Stage:
Stage:
Stage:
Stage:
Stage:
Stage:
Showing
- Cargo.lock 1 addition, 0 deletionsCargo.lock
- cumulus/pallets/xcmp-queue/src/tests.rs 2 additions, 9 deletionscumulus/pallets/xcmp-queue/src/tests.rs
- polkadot/runtime/parachains/src/ump_tests.rs 4 additions, 4 deletionspolkadot/runtime/parachains/src/ump_tests.rs
- substrate/frame/message-queue/Cargo.toml 2 additions, 0 deletionssubstrate/frame/message-queue/Cargo.toml
- substrate/frame/message-queue/src/benchmarking.rs 4 additions, 3 deletionssubstrate/frame/message-queue/src/benchmarking.rs
- substrate/frame/message-queue/src/integration_test.rs 76 additions, 6 deletionssubstrate/frame/message-queue/src/integration_test.rs
- substrate/frame/message-queue/src/lib.rs 177 additions, 50 deletionssubstrate/frame/message-queue/src/lib.rs
- substrate/frame/message-queue/src/mock.rs 29 additions, 1 deletionsubstrate/frame/message-queue/src/mock.rs
- substrate/frame/message-queue/src/mock_helpers.rs 4 additions, 0 deletionssubstrate/frame/message-queue/src/mock_helpers.rs
- substrate/frame/message-queue/src/tests.rs 178 additions, 7 deletionssubstrate/frame/message-queue/src/tests.rs
- substrate/frame/support/src/traits/messages.rs 2 additions, 0 deletionssubstrate/frame/support/src/traits/messages.rs
Please register or sign in to comment