Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update upstream to v0.9.15 #359

Merged
merged 10 commits into from
Feb 3, 2022
Merged

Update upstream to v0.9.15 #359

merged 10 commits into from
Feb 3, 2022

Conversation

Dengjianping
Copy link
Contributor

@Dengjianping Dengjianping commented Jan 21, 2022

Description

Update upstream to v0.9.15

closes: #351

Calamari/Manta Runtime

Hook order execution is now more explicit hook change, The pr tells more details about the change.
For now we will use AllPalletsReversedWithSystemFirst which will preserve old behaviour and we don't have to reorder our pallets in consstruct_runtime!
At some point we should migrate to AllPalletsWithSystem - #378

Calamari/Manta Client

None.

Upstream Changes

Polkadot:

paritytech/polkadot@release-v0.9.13...release-v0.9.15

Substrate:

paritytech/substrate@polkadot-v0.9.13...polkadot-v0.9.15

Cumulus:
None.

paritytech/cumulus@polkadot-v0.9.13...polkadot-v0.9.15


Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

  • Targeted PR against correct branch (manta or dolphin) with right title (start with [Manta] or [Dolphin]),
  • Linked to Github issue with discussion and accepted design OR have an explanation in the PR that describes this work.
  • Wrote unit tests.
  • Updated relevant documentation in the code.
  • Re-reviewed Files changed in the Github PR explorer.
  • If runtime changes, need to update the version numbers properly:
    • authoring_version: The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.
    • spec_version: The version of the runtime specification. A full node will not attempt to use its native runtime in substitute for the on-chain Wasm runtime unless all of spec_name, spec_version, and authoring_version are the same between Wasm and native.
    • impl_version: The version of the implementation of the specification. Nodes are free to ignore this; it serves only as an indication that the code is different; as long as the other two versions are the same then while the actual code may be different, it is nonetheless required to do the same thing. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the impl_version changing.
    • transaction_version: The version of the extrinsics interface. This number must be updated in the following circumstances: extrinsic parameters (number, order, or types) have been changed; extrinsics or pallets have been removed; or the pallet order in the construct_runtime! macro or extrinsic order in a pallet has been changed. If this number is updated, then the spec_version must also be updated
  • If needed, notify the committer this is a draft-release and a tag is needed after merging the PR.
  • Verify benchmarks & weights have been updated for any modified runtime logics
  • If needed, bump version for every crate.
  • If import a new pallet, choose a proper module index for it, and allow it in BaseFilter. Ensure every extrinsic works from front-end. If there's corresponding tool, ensure both work for each other.
  • If needed, update our Javascript/Typescript APIs. These APIs are offcially used by exchanges or community developers.
  • If we're going to issue a new release, freeze the code one week early(it depends, but usually it's one week), ensure we have enough time for related testing.

@Dengjianping Dengjianping self-assigned this Jan 21, 2022
@Dengjianping Dengjianping added P-high Priority: High A-calamari Area: Issues and PRs related to the Calamari Runtime A-manta Area: Issues and PRs related to the Manta Runtime labels Jan 21, 2022
@Dengjianping Dengjianping added this to the v3.1.3 milestone Jan 21, 2022
runtime/calamari/src/lib.rs Outdated Show resolved Hide resolved
runtime/manta/src/lib.rs Outdated Show resolved Hide resolved
@Dengjianping Dengjianping marked this pull request as ready for review January 21, 2022 15:05
Copy link
Collaborator

@stechu stechu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@stechu
Copy link
Collaborator

stechu commented Feb 3, 2022

@Garandor Can you take a look whether the concern you raised is addressed? It looks to be addressed to me.

@Garandor
Copy link
Contributor

Garandor commented Feb 3, 2022

My main concern is that using AllPalletsWithSystemFirst would in effect duplicate System, as it is also explicitly listed in https://github.com/Manta-Network/Manta/blob/manta/runtime/manta/src/lib.rs#L583

If system is running any hooks, its invocation could be duplicated - e.g. logs could be written twice if executed on hook.
I haven't looked into hooks enough to determine if this concern is valid or not and I will look into this more, but if any of you know this isn't a problem I would defer to your opinion.

The rest LGTM

@ghzlatarev
Copy link
Contributor

ghzlatarev commented Feb 3, 2022

My main concern is that using AllPalletsWithSystemFirst would in effect duplicate System, as it is also explicitly listed in https://github.com/Manta-Network/Manta/blob/manta/runtime/manta/src/lib.rs#L583

If system is running any hooks, its invocation could be duplicated - e.g. logs could be written twice if executed on hook. I haven't looked into hooks enough to determine if this concern is valid or not and I will look into this more, but if any of you know this isn't a problem I would defer to your opinion.

The rest LGTM

What you are looking for are the diffs in frame/executive/src/lib.rs and frame/support/procedural/src/construct_runtime/mod.rs
You can see how construct_runtime is expanded:

	let all_pallets_with_system_reversed = names
		.iter()
		.fold(TokenStream2::default(), |combined, name| quote!((#name, #combined)));

and then how it is used in Executive:

                       let on_initialize_weight =
				<AllPalletsWithSystem as OnInitialize<u64>>::on_initialize(block_number);

When before it was actually referring to system pallet explicitly:

			let frame_system_on_initialize_weight =
				frame_system::Pallet::<Runtime>::on_initialize(block_number);
			let on_initialize_weight =
				<AllPallets as OnInitialize<u64>>::on_initialize(block_number);

This is why there is no double execution. System is no longer called explicitly. but as part of the set from construct_runtime!.

@Garandor
Copy link
Contributor

Garandor commented Feb 3, 2022

Ok got it, since the behavior of executive changed to not explicitly execute System, it is not a concern.

Thanks @ghzlatarev

@stechu stechu merged commit 3ba51e0 into manta Feb 3, 2022
dziabko pushed a commit that referenced this pull request Feb 24, 2022
* Bump deps to polkadot-v0.9.15

* Use old AllPalletsReversedWithSystemFirst order 

Co-authored-by: ghzlatarev <ghzlatarev@gmail.com>
@stechu stechu deleted the jamie/v0.9.15 branch June 23, 2022 01:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-calamari Area: Issues and PRs related to the Calamari Runtime A-manta Area: Issues and PRs related to the Manta Runtime P-high Priority: High
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update substrate dependencies to v9.1.5
4 participants