Conversation
shaunxw
left a comment
There was a problem hiding this comment.
When paused, XCM messages should be queued in storage, and they needs to be replayed after resumed.
@shaunxw @zjb0807 the implementation of processing DMP and HRMP message both first store data in relaychain, then the parachain sync relaychain data, and read messages by relay_client.runtime_api. when processing dmp and hrmp messages in parachain, it'll update in current implementation, even though we ingnore invoke going back to Tuple implementation of fortunately, the dmp-queue implementation of
the premise of using these machanism is that we must call dmp-queue implementation of Ps. as currenty xcm-emulator use memory like(non-relayed) to test cross chain message, and for the case of dmp, relaychain may send duplicate dmp message to parachain. so the dmp-queue testcase may seems a little strange. |
shaunxw
left a comment
There was a problem hiding this comment.
I think you're right. We can leverage the message cache to dmp and xcmp queue with max_weight.
Message sending in xcm-emulator can be improved later, at this time it's good to have manual tests to be safe.
|
/bench runtime mandala module_transaction_pause |
|
Finished benchmark for branch: xcm-pause Benchmark: Benchmark Runtime Mandala Module cargo run --release --color=never --bin=acala --features=runtime-benchmarks --features=with-mandala-runtime -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=module_transaction_pause --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --template=./templates/runtime-weight-template.hbs --output=./runtime/mandala/src/weights/ ResultsPallet: "module_transaction_pause", Extrinsic: "pause_transaction", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
|
…hmarks --features=with-mandala-runtime -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=module_transaction_pause --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --template=./templates/runtime-weight-template.hbs --output=./runtime/mandala/src/weights/
|
/bench runtime karura module_transaction_pause |
|
Finished benchmark for branch: xcm-pause Benchmark: Benchmark Runtime Karura Module cargo run --release --color=never --bin=acala --features=runtime-benchmarks --features=with-karura-runtime -- benchmark --chain=karura-dev --steps=50 --repeat=20 --pallet=module_transaction_pause --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --template=./templates/runtime-weight-template.hbs --output=./runtime/karura/src/weights/ ResultsPallet: "module_transaction_pause", Extrinsic: "pause_transaction", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
|
…hmarks --features=with-karura-runtime -- benchmark --chain=karura-dev --steps=50 --repeat=20 --pallet=module_transaction_pause --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --template=./templates/runtime-weight-template.hbs --output=./runtime/karura/src/weights/
|
/bench runtime acala module_transaction_pause |
|
Finished benchmark for branch: xcm-pause Benchmark: Benchmark Runtime Acala Module cargo run --release --color=never --bin=acala --features=runtime-benchmarks --features=with-acala-runtime -- benchmark --chain=acala-latest --steps=50 --repeat=20 --pallet=module_transaction_pause --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --template=./templates/runtime-weight-template.hbs --output=./runtime/acala/src/weights/ ResultsPallet: "module_transaction_pause", Extrinsic: "pause_transaction", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
|
…hmarks --features=with-acala-runtime -- benchmark --chain=acala-latest --steps=50 --repeat=20 --pallet=module_transaction_pause --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --template=./templates/runtime-weight-template.hbs --output=./runtime/acala/src/weights/
|
the manual test (after pause) log show un-expected result:
|
|
I found the second execute_xcm is invoked by so we need other machanism to make sure don't invoke |
|
I can see few options:
|
|
Or requesting hrmp/dmp pallets to be able to pause/resume channels. |
|
paritytech/cumulus#896 is merged |
|
I'll continue this work after v0.9.16 is merged, as cumulus merge the PR to the master branch. also I think it'll be easy now, just need to add two config item to xcmp_queue::Config and do some test. the dmp-queue seems haven't implement yet. so we may just first introduct xcmp. |
closes: #1664