Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Use CPU clock timeout for PVF jobs #6282

Merged
merged 23 commits into from
Nov 30, 2022
Merged

Conversation

mrcnski
Copy link
Contributor

@mrcnski mrcnski commented Nov 14, 2022

PULL REQUEST

Overview

The idea behind this change is that the CPU clock is less affected by load than the wall clock.

We confirmed this empirically with an experiment.

The hope is that this reduces unnecessary disputes.

Changes

  • The child worker now spawns a new separate thread, to monitor CPU time, whenever a job comes in.
    • The thread mostly sleeps and uses a strategy to wake up as little as possible.
    • If the job goes over the timeout the whole child process gets killed.
  • The host still has a timeout for waiting for a response from the child, but it is 4x as lenient as before.
    • This is a wall clock timeout, since there is no good way to get a child's CPU time before the child process exits.
    • This is lenient because the wall clock can slow down up to a factor of 4 (tested on 32 threads of work on an 8-core machine).

TODO

  • Add equivalent logic for PVF execution
  • Add tests
  • Small refactor of long match arm

Issues closed

Closes #4217

@mrcnski mrcnski added A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D3-trivial 🧸 PR contains trivial changes in a runtime directory that do not require an audit. labels Nov 14, 2022
@github-actions github-actions bot added A3-in_progress Pull request is in progress. No review needed at this stage. and removed A0-please_review Pull request needs code review. labels Nov 14, 2022
@vstakhov
Copy link
Contributor

The idea behind this change is that the CPU clock is less affected by load than the wall clock.

Well, I'd say that it is more affected by load as this clock actually measures it's own process load. Hence, if a process is sleeping (e.g. waiting on epoll) it's clock of type CLOCK_PROCESS_CPUTIME_ID is not running as well. On the other hand, if the task is to measure the own load, this timer might be a good thing to check (but less portable than getrusage(RUSAGE_SELF)).

Wall clock is really affected by cpu load but it shouldn't be that significant unless we use coarse timers (and we should not do it in this case).

@mrcnski
Copy link
Contributor Author

mrcnski commented Nov 14, 2022

@vstakhov By "CPU clock is less affected by load than the wall clock" I mean the CPU clock of the process is less affected by load of the system (i.e. other processes). The load of the child process here is constant (preparing an artifact). We found that for a constant amount of work in the process, timing it with the cpu clock resulted in more consistent measurements than using the wall clock. Wall time varied up to a factor of 4 depending on system load, whereas measured CPU time varied by less than a factor of 2.

this timer might be a good thing to check (but less portable than getrusage(RUSAGE_SELF))

Do you mean as opposed to clock_gettime?

@s0me0ne-unkn0wn
Copy link
Contributor

I love this one, it is not only about more precise measurements, in perspective it would allow us to enable more robust preparation and execution pipelines with better throughput, as CPU time does not depend on number of parallel workers as strongly as wall clock time.
My only concern is if it works equally well in different environments. Remember that we have to perform really weird checks and address some non-obvious problems in different environments. I think it should be evaluated in some way.

@vstakhov
Copy link
Contributor

Do you mean as opposed to clock_gettime?

Yes, afair, the way to make it working in osx was not very pretty:

	thread_port_t thread = mach_thread_self();

	mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT;
	thread_basic_info_data_t info;
	if (thread_info (thread, THREAD_BASIC_INFO, (thread_info_t)&info, &count) != KERN_SUCCESS) {
		return -1;
	}

	res = info.user_time.seconds + info.system_time.seconds;
	res += ((double)(info.user_time.microseconds + info.system_time.microseconds)) / 1e6;
	mach_port_deallocate(mach_task_self(), thread);

Then I've switched to getrusage as it seems to be now in the basic POSIX spec.

Probably the support of CLOCK_PROCESS_CPUTIME_ID is now fixed in the more recent osx versions though.

@vstakhov
Copy link
Contributor

By "CPU clock is less affected by load than the wall clock" I mean the CPU clock of the process is less affected by load of the system (i.e. other processes). The load of the child process here is constant (preparing an artifact). We found that for a constant amount of work in the process, timing it with the cpu clock resulted in more consistent measurements than using the wall clock.

That makes total sense, if the task is to measure own cpu load, then wall clock is not the best option due to preemption and other issues. CPU clock is also affected due to cache/tlb pollution but it is definitely a better option than a wall clock. However, if the evaluated code can wait/yeild somehow, then it might be possible to abuse this timer by performing very long sleep. On the other hand, this opportunity is covered by the fact that you also fire a wall clock timer in the parent process...

@eskimor
Copy link
Member

eskimor commented Nov 15, 2022

That makes total sense, if the task is to measure own cpu load, then wall clock is not the best option due to preemption and other issues. CPU clock is also affected due to cache/tlb pollution but it is definitely a better option than a wall clock. However, if the evaluated code can wait/yeild somehow, then it might be possible to abuse this timer by performing very long sleep. On the other hand, this opportunity is covered by the fact that you also fire a wall clock timer in the parent process...

Yep, but as far as I know there should be no IO in the PVF execution. Everything should be in memory. The thing I am mostly worried about is swap or other ways the operating system might introduce disk fetches. Hence leaving a generous wall clock timeout just in case should be a good safe guard indeed.

Hmm, about sleep ... is this even supported @pepyakin ?

@mrcnski
Copy link
Contributor Author

mrcnski commented Nov 15, 2022

Then I've switched to getrusage as it seems to be now in the basic POSIX spec.

Probably the support of CLOCK_PROCESS_CPUTIME_ID is now fixed in the more recent osx versions though.

@vstakhov Looks like clock_gettime is also in the POSIX spec:
https://pubs.opengroup.org/onlinepubs/009696699/functions/clock_gettime.html

According to the docs for the cpu_time crate, MacOS has supported clock_gettime since 2016:
https://github.com/tailhook/cpu-time/blob/master/src/clock_gettime.rs#L60

Not sure how old of machines we want to support. It is simpler for me to use the cpu_time crate but I can switch to getrusage if you think that would be better.

@vstakhov
Copy link
Contributor

Looks like clock_gettime is also in the POSIX spec:

It is in the realtime part that is technically an extension. But yes, it seems to be supported even by osx nowadays :)

It is simpler for me to use the cpu_time crate but I can switch to getrusage if you think that would be better.

I think this switch might be useful merely if there are any advantages of getrusage that are useful in our case. In general, getrusage provides more information than just cpu ticks. The question is whether there is any use case of that extra information. If not, I'd also stay with cpu_time as it covers the vast majority of the POSIX-ish OSes presented today.

@mrcnski
Copy link
Contributor Author

mrcnski commented Nov 16, 2022

I think this switch might be useful merely if there are any advantages of getrusage that are useful in our case. In general, getrusage provides more information than just cpu ticks. The question is whether there is any use case of that extra information. If not, I'd also stay with cpu_time as it covers the vast majority of the POSIX-ish OSes presented today.

Makes sense. I had a look, but there doesn't seem to be anything that could be useful:

struct rusage {
    struct timeval ru_utime; /* user CPU time used */
    struct timeval ru_stime; /* system CPU time used */
    long   ru_maxrss;        /* maximum resident set size */
    long   ru_ixrss;         /* integral shared memory size */
    long   ru_idrss;         /* integral unshared data size */
    long   ru_isrss;         /* integral unshared stack size */
    long   ru_minflt;        /* page reclaims (soft page faults) */
    long   ru_majflt;        /* page faults (hard page faults) */
    long   ru_nswap;         /* swaps */
    long   ru_inblock;       /* block input operations */
    long   ru_oublock;       /* block output operations */
    long   ru_msgsnd;        /* IPC messages sent */
    long   ru_msgrcv;        /* IPC messages received */
    long   ru_nsignals;      /* signals received */
    long   ru_nvcsw;         /* voluntary context switches */
    long   ru_nivcsw;        /* involuntary context switches */
};

@mrcnski
Copy link
Contributor Author

mrcnski commented Nov 16, 2022

At this point, I am just waiting for some quick feedback from @pepyakin or @slumber before finalizing this PR and moving it out of the draft stage.

@mrcnski mrcnski force-pushed the m-cat/pvf-preparation-cpu-time branch from 33fe557 to 8e5139f Compare November 20, 2022 16:29
node/core/pvf/src/prepare/worker.rs Outdated Show resolved Hide resolved
node/core/pvf/src/prepare/worker.rs Outdated Show resolved Hide resolved
node/core/pvf/src/prepare/worker.rs Outdated Show resolved Hide resolved
node/core/pvf/src/prepare/worker.rs Outdated Show resolved Hide resolved
@mrcnski mrcnski changed the title Use CPU clock timeout for PVF preparation Use CPU clock timeout for PVF jobs Nov 20, 2022
Copy link
Contributor

@slumber slumber left a comment

Choose a reason for hiding this comment

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

2 more nits from me, other than that good to go

Comment on lines 377 to 379
.and_then(|inner_result| inner_result)?;

let cpu_time_elapsed = cpu_time_start.elapsed();
Copy link
Contributor

Choose a reason for hiding this comment

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

Why did you decide to move this code into prepare_artifact? To me it clearly belongs to some worker-related code, now it's unclear what prepare_artifact is responsible for (ditto for execute part).

Copy link
Contributor Author

@mrcnski mrcnski Nov 20, 2022

Choose a reason for hiding this comment

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

Yeah, I wasn't sure about this change. In the execute part we were already getting the elapsed duration, which is a necessary part of the response returned from that function. And I wanted to put the lock flag as close as possible to the end of the execute operation, so I stuck it in the middle of that function kind of awkwardly. Then I figured I could do the same in the prepare part, for parity with the execute code and also to reduce indentation (I believe it saved 4 indent levels).

I considered alternatively adding another function wrapper around prepare_artifact called worker_prepare_job or something, which would have all this thread coordination logic in it. But I feel like it'd also be awkward to have this big chain of function calls.

I thought the present solution wasn't too bad, because prepare_artifact was not doing much previously -- it was basically just two function calls, to prevalidate and prepare. Felt like the least annoying option. It should probably be renamed to e.g. worker_prepare_job if we keep it like this.

Copy link
Contributor

Choose a reason for hiding this comment

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

I would've still went with this implementation, (personally) the readability was better despite indentation levels

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Okay, I'll change it back. Thanks for the feedback.

// return.
match handle.join() {
Ok(()) => {
unreachable!(
Copy link
Contributor

Choose a reason for hiding this comment

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

This unreachable looks really scary and unnecessary, I would've went with a simple

// Monitor thread detected timeout and likely already terminated a process, nothing to do.
return

Copy link
Member

Choose a reason for hiding this comment

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

We can also have a log or even a debug_assert.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm, I don't see the point of logging a case that's unreachable, which we have a proof for. I would personally keep the unreachable and maybe just make it less verbose. We also can't just do an empty return here since worker_event_loop expects an io::Result<Never>>.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, continue instead. Or

make it less verbose

would also work

Copy link
Member

@eskimor eskimor Nov 21, 2022

Choose a reason for hiding this comment

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

Well, unreachable code is more often reachable than one would expect - and if it were reached, you would like to know, as this would suggest a mistake in our reasoning of the code. While there is a proof, it is not very local. It is across function and even thread boundaries. This is a setup where a proof can relatively easily be invalidated by "remote" changes.

We are not in the Polkadot node here, but in a process that is expected to just have quit anyway - so it should not cause much harm. What would be the result of that unreachable hit - UnexpectedWorkerDeath? Given this, the unreachable should actually be fine.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Makes sense, removed the unreachable!.

@mrcnski mrcnski marked this pull request as ready for review November 22, 2022 14:23
@github-actions github-actions bot added A0-please_review Pull request needs code review. and removed A3-in_progress Pull request is in progress. No review needed at this stage. labels Nov 22, 2022
@mrcnski
Copy link
Contributor Author

mrcnski commented Nov 22, 2022

Looks like the existing tests already cover timeouts, as well as successful execution within the timeout. I added some timing asserts where I could, but I wasn't sure how to test the CPU-time-specific changes, or if we need to.

@mrcnski mrcnski requested a review from eskimor November 22, 2022 14:26
@mrcnski mrcnski mentioned this pull request Nov 24, 2022
@paritytech-cicd-pr
Copy link

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: test-linux-stable
Logs: https://gitlab.parity.io/parity/mirrors/polkadot/-/jobs/2087671

Copy link
Member

@eskimor eskimor left a comment

Choose a reason for hiding this comment

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

Nice work @m-cat !

node/core/pvf/src/execute/worker.rs Show resolved Hide resolved
@eskimor eskimor merged commit ce003d6 into master Nov 30, 2022
@eskimor eskimor deleted the m-cat/pvf-preparation-cpu-time branch November 30, 2022 12:17
ordian added a commit that referenced this pull request Nov 30, 2022
* master:
  guide: remove refences to outdated secondary checkers (#6309)
  Use CPU clock timeout for PVF jobs (#6282)
  support opengov calls in proxy definitions (#6366)
  Companion for: MMR: move RPC code from frame/ to client/ (#6369)
  Clippyfy (#6341)
  sync versions with current release (0.9.33) (#6363)
  Add Collectives as Trusted Teleporter (#6326)
  Remove `parity-util-mem` from `runtime-api` cache (#6367)
  Companion for: pallet-mmr: move offchain logic to client-side gadget (#6321)
  remove executed migrations (0.9.33) (#6364)
  dispute-coordinator: fix earliest session checks for pruning and import (#6358)
  [ci] fix implementer guide job (#6357)
  Provide some more granular metrics for polkadot_pvf_execution_time (#6346)
  Add more granularity to prometheus histogram buckets (#6348)
  cargo update -p sp-io (#6351)
  Add support for outbound only configs on request/response protocols (#6343)
@mrcnski mrcnski self-assigned this Dec 23, 2022
devdanco added a commit to gasp-xyz/polkadot that referenced this pull request Feb 14, 2023
* Companion for EPM duplicate submissions (paritytech#6115)

* make it work

* add migration

* fix

* Update utils/staking-miner/src/opts.rs

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Update utils/staking-miner/src/monitor.rs

* small tweaks

* Update utils/staking-miner/src/opts.rs

Co-authored-by: Bastian Köcher <info@kchr.de>

* fmt

* fix print'

* fmt

* update lockfile for {"substrate"}

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: parity-processbot <>

* try and fix build (paritytech#6170)

* sync versions with current release (0.9.31) (paritytech#6176)

* Bump spec_version to 9310

* bump transaction_version (0.9.31) (paritytech#6171)

* Bump transaction_version for polkadot

* Bump transaction_version for kusama

* Bump transaction_version for rococo

* Bump transaction_version for westend

* Bump transaction_version for polkadot

* Bump transaction_version for kusama

* Bump transaction_version for rococo

* Bump transaction_version for westend

* Bump crate versions (0.9.31)

* Use a more typesafe approach for managing indexed data (paritytech#6150)

* Fix for issue #2403

* Nightly fmt

* Quick documentation fixes

* Default Implementation

* iter() function integrated

* Implemented iter functionalities

* Fmt

* small change

* updates node-network

* updates in dispute-coordinator

* Updates

* benchmarking fix

* minor fix

* test fixes in runtime api

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Removal of [index], shorting of FromIterator, Renaming of GroupValidators to ValidatorGroups

* Removal of ops import

* documentation fixes for spell check

* implementation of generic type

* Refactoring

* Test and documentation fixes

* minor test fix

* minor test fix

* minor test fix

* Update node/network/statement-distribution/src/lib.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* removed IterMut

* Update node/core/dispute-coordinator/src/import.rs

Co-authored-by: Andronik <write@reusable.software>

* Update node/core/dispute-coordinator/src/initialized.rs

Co-authored-by: Andronik <write@reusable.software>

* Update primitives/src/v2/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* fmt

* IterMut

* documentation update

Co-authored-by: Andronik <write@reusable.software>

* minor adjustments and new TypeIndex trait

* spelling fix

* TypeIndex fix

Co-authored-by: Andronik <write@reusable.software>

* Add missing prerequisite in README for implementers guide (paritytech#6181)

* Companion for #12457 (Bounded Multisig) (paritytech#6172)

* u16 -> u32

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Make some fixes to logging in PVF subsystem (paritytech#6180)

* Log exit status code for workers

* Make log for execute job conclusion match prepare job conclusion

Trace log for conclusion of prepare job:

```rs
gum::debug!(
	target: LOG_TARGET,
	validation_code_hash = ?artifact_id.code_hash,
	?worker,
	?rip,
	"prepare worker concluded",
);
```

Co-authored-by: parity-processbot <>

* Co #12558: Update `pallet-multisig` benches (paritytech#6188)

* Typo

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add multisig weights

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update multisig weights

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* update lockfile for {"substrate"}

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: parity-processbot <>

* Update impl guide README (paritytech#6197)

* update impl guide readme

* Update README.md

* [Companion] StakingInterface adjustments (paritytech#6199)

* [Companion] StakingInterface adjustments

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Companion for update `wasm-opt` (paritytech#6209)

* Update cc

* Update regex

* Update thiserror

* Update anyhow

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Make ValidateUnsigned available on all chains for paras. (paritytech#6214)

Co-authored-by: eskimor <eskimor@no-such-url.com>

* fix upgrade node test, use latest as base image (paritytech#6215)

* Check if approval voting db is empty on startup (paritytech#6219)

* Add approval voting db sanity check

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* add newline back

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* no need for overlay to read

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* PVF timeouts follow-up (paritytech#6151)

* Rename timeout consts and timeout parameter; bump leniency

* Update implementor's guide with info about PVFs

* Make glossary a bit easier to read

* Add a note to LENIENT_PREPARATION_TIMEOUT

* Remove PVF-specific section from glossary

* Fix some typos

* BlockId removal: refactor: BlockBackend::block_body (paritytech#6223)

* BlockId removal: refactor: BlockBackend::block_body

It changes the arguments of `BlockBackend::block_body` method from: `BlockId<Block>` to: `&Block::Hash`

This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Replace parachain/parathread boolean by enum (paritytech#6198)

* Replace parachain/parathread boolean by enum

* Address PR comments

* Update dependencies

* ParaType -> ParaKind

* Swap enum field order to avoid migration

* Rename paratype field to parakind

* Manual en-/decocing of Parakind

* Manual TypeInfo for ParaKind

* rename field back to parachain

* minor

* Update runtime/parachains/src/paras/mod.rs

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* Manual serde Serialize and Deserialize for ParaKind

* cargo fmt

* Update runtime/parachains/src/paras/mod.rs

Co-authored-by: Andronik <write@reusable.software>

* Add test for serde_json encoding/decoding

* Move serde_json dep to dev-deps

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Co-authored-by: Andronik <write@reusable.software>

* BlockId removal: refactor: Backend::justifications (paritytech#6229)

* BlockId removal: refactor: Backend::justifications

It changes the arguments of `Backend::justifications` method from: `BlockId<Block>` to: `&Block::Hash`

This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)

* formatting

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* BlockId removal: refactor: Backend::block_indexed_body (paritytech#6233)

* BlockId removal: refactor: Backend::block_indexed_body

It changes the arguments of `Backend::block_indexed_body` method from: `BlockId<Block>` to: `&Block::Hash`

This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Xcm-Simulator Docs (paritytech#6178)

* Xcm-Simulator Docs

* spelling

* examples

* better docs

Co-authored-by: parity-processbot <>

* Add stake.plus bootnodes for westend, kusama, polkadot (paritytech#6224)

* add stake.plus bootnodes

* add stake.plus bootnodes for westend, kusama and polkadot

Co-authored-by: senseless <tom@stake.plus>
Co-authored-by: parity-processbot <>

* clean up executed runtime migrations (paritytech#6206)

* kusama: clean up executed migrations

* polkadot: clean up executed migrations

* westend: clean up executed migrations

* Co #12085: Update `k256` (paritytech#6238)

* Typo

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update Cargo.lock

* update lockfile for {"substrate"}

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: parity-processbot <>

* cleanup deps (paritytech#6242)

* Pipeline with ci image with rust 1.65 (paritytech#6243)

* Pipeline with ci image with rust 1.65

* fix a warning

* return production image

Co-authored-by: Andronik <write@reusable.software>

* BlockId removal: &Hash to Hash (paritytech#6246)

* BlockId removal: &Hash to Hash

It changes &Block::Hash argument to Block::Hash.

This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)

* missing file corrected

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Increase max rewardable nominators (paritytech#6230)

* Increase max rewardable nominators

* update kusama as well

* Update polkadot inflation to take into account auctions (paritytech#5872)

* Update polkadot inflation to take into account auctions

* a possible solution -- but needs a rather untrivial data seeding

* some additional comments

* Use LOWEST_PUBLIC_ID as a guide to filter out system/common good para ids

* Fixes

* move tests

* fix

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* Add a `last change` footer to the implementers guide (paritytech#6216)

* Add a `last change` footer to the implementers guide

Some of the newcomers were noticing outdated pages in the implementer's guide.
This idea came up as a heuristic for how up-to-date an individual page is.

* Update `build-implementers-guide` CI job

* Retry failed PVF prepare jobs (paritytech#6213)

* staking miner: remove needless queue check (paritytech#6221)

* staking miner: remove needless queue check

If the queue is full and the "mined solution" is better than solutions in the queue according to the "strategy"
then the solution with worse score will be kicked out from the queue.

Thus, the check can be removed completly.

* fix compile warns

* companion for fast unstake batching (paritytech#6253)

* update

* add migrations

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Make rolling session more resilient in case of long finality stalls (paritytech#6106)

* Impl dynamic window size. Keep sessions for unfinalized chain

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* feedback

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Stretch also in contructor plus  tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* review feedback

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix approval-voting tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* grunting: dispute coordinator tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* add session window column

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* integrate approval vote and fix tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix rolling session tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Small refactor

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* WIP, tests failing

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Fix approval voting tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix dispute-coordinator tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* remove uneeded param

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fmt

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix loose ends

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* allow failure and tests for it

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix comment

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* comment fix

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* style fix

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* new col doesn't need to be ordered

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fmt and spellcheck

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* db persist tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Add v2 config and cols

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* DB upgrade WIP

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Fix comments

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* add todo

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* update to parity-db to "0.4.2"

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* migration complete

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* One session window size

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix merge damage

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix build errors

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fmt

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* comment fix

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix build

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* make error more explicit

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* add comment

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* refactor conflict merge

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* rename col_data

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* add doc comment

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* fix build

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* migration: move all cols to v2

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Retry failed PVF execution (AmbiguousWorkerDeath) (paritytech#6235)

* Fix a couple of typos

* Retry failed PVF execution

PVF execution that fails due to AmbiguousWorkerDeath should be retried once.
This should reduce the occurrence of failures due to transient conditions.

Closes paritytech#6195

* Address a couple of nits

* Write tests; refactor (add `validate_candidate_with_retry`)

* Update node/core/candidate-validation/src/lib.rs

Co-authored-by: Andronik <write@reusable.software>

Co-authored-by: eskimor <eskimor@users.noreply.github.com>
Co-authored-by: Andronik <write@reusable.software>

* [Companion] Bound Election and Staking by MaxActiveValidators (paritytech#6157)

* add maximum winners to multi phase election provider

* fallback to noelection

* fmt

* missing values

* convert boundedvec to inner before sort

* dont clone

* pr feedback

* update lockfile for {"substrate"}

* run onchain election on westend benchmark

Co-authored-by: parity-processbot <>

* Companion for substrate#12560 (paritytech#6226)

* Companion for substrate#12560

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* update num-format v0.4.0 ==> v0.4.3

* Fix

* update lockfile for {"substrate"}

Signed-off-by: koushiro <koushiro.cqx@gmail.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: parity-processbot <>

* Companion for substrate#12530: Consolidate and deduplicate MMR API methods (paritytech#6167)

* histor. batch proof: make best block arg optional

* make generate_batch_proof stub for historical

* merge generate_{historical_}batch_proof functions

* merge generate_{batch_}proof functions

* merge verify_{batch_}proof functions

* merge verify_{batch_}proof_stateless functions

* rename BatchProof->Proof

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Add a few staking params to fast-runtime build (paritytech#5424)

Co-authored-by: Squirrel <gilescope@gmail.com>

* State trie migration rococo runtime changes. (paritytech#6127)

* add state-trie-migration (warn key need to be changed)

* rococo root

* restore master benchs (weights from substrate are used).

* use ord_parameter macro.

* do not upgrade runtime version yet

* apply review changes

* to test ci

* Revert "to test ci"

This reverts commit 5df6c5c.

* test ci

* Revert "test ci"

This reverts commit 0747761.

Co-authored-by: parity-processbot <>

* Brad implementers guide revisions 2 (paritytech#6239)

* Add disputes subsystems fix

* Updated dispute approval vote import reasoning

* Improved wording of my changes

* Resolving issues brought up in comments

* Update disputes prioritisation in `dispute-coordinator` (paritytech#6130)

* Scraper processes CandidateBacked events

* Change definition of best-effort

* Fix `dispute-coordinator` tests

* Unit test for dispute filtering

* Clarification comment

* Add tests

* Fix logic

If a dispute is not backed, not included and not confirmed we
don't participate but we do import votes.

* Add metrics for refrained participations

* Revert "Add tests"

This reverts commit 7b8391a.

* Revert "Unit test for dispute filtering"

This reverts commit 92ba5fe.

* fix dispute-coordinator tests

* Fix scraping

* new tests

* Small fixes in guide

* Apply suggestions from code review

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* Fix some comments and remove a pointless test

* Code review feedback

* Clarification comment in tests

* Some tests

* Reference counted `CandidateHash` in scraper

* Proper handling for Backed and Included candidates in scraper

Backed candidates which are not included should be kept for a
predetermined window of finalized blocks. E.g. if a candidate is backed
but not included in block 2, and the window size is 2, the same
candidate should be cleaned after block 4 is finalized.

Add reference counting for candidates in scraper. A candidate can be
added on multiple block heights so we have to make sure we don't clean
it prematurely from the scraper.

Add tests.

* Update comments in tests

* Guide update

* Fix cleanup logic for `backed_candidates_by_block_number`

* Simplify cleanup

* Make spellcheck happy

* Update tests

* Extract candidate backing logic in separate struct

* Code review feedback

* Treat  backed and included candidates in the same fashion

* Update some comments

* Small improvements in test

* spell check

* Fix some more comments

* clean -> prune

* Code review feedback

* Reword comment

* spelling

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* approval-voting: remove redundant validation check (paritytech#6266)

* approval-voting: remove a redundant check

* candidate-validation: remove unreachable check

* remove fill_block (paritytech#6200)

Co-authored-by: parity-processbot <>

* fix a compilation warning (paritytech#6279)

Fixes paritytech#6277.

* Only report concluded if there is an actual dispute. (paritytech#6270)

* Only report concluded if there is an actual dispute.

Hence no "non"-disputes will be added to disputes anymore.

* Fix redundant check.

* Test for no onesided disputes.

Co-authored-by: eskimor <eskimor@no-such-url.com>

* [ci] fix buildah image (paritytech#6281)

* Revert special casing of Kusama for grandpa rounds. (paritytech#6217)

Co-authored-by: eskimor <eskimor@no-such-url.com>

* Fixes "for loop over an `Option`" warnings (paritytech#6291)

Was seeing these warnings when running `cargo check --all`:

```
warning: for loop over an `Option`. This is more readably written as an `if let` statement
    --> node/core/approval-voting/src/lib.rs:1147:21
     |
1147 |             for activated in update.activated {
     |                              ^^^^^^^^^^^^^^^^
     |
     = note: `#[warn(for_loops_over_fallibles)]` on by default
help: to check pattern in a loop use `while let`
     |
1147 |             while let Some(activated) = update.activated {
     |             ~~~~~~~~~~~~~~~         ~~~
help: consider using `if let` to clear intent
     |
1147 |             if let Some(activated) = update.activated {
     |             ~~~~~~~~~~~~         ~~~
```

My guess is that `activated` used to be a SmallVec or similar, as is
`deactivated`. It was changed to an `Option`, the `for` still compiled (it's
technically correct, just weird), and the compiler didn't catch it until now.

* companion for #12599 (paritytech#6290)

* companion for #12599

* update Cargo.lock

* use cargo path instead of diener

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* [ci] Improve pipeline stopper (paritytech#6300)

* [ci] Improve pipeline stopper

* break test-linux-stable

* fix test-linux-stable

* Provisioner should ignore unconfirmed disputes (paritytech#6294)

* Fix typos

* Filter unconfirmed disputes in provisioner -  random_selection

* Rework dispute coordinator to return `DisputeStatus` with
`ActiveDisputes` message.
* Rework the random_selection implementation of `select_disptues` in
  `provisioner` to return only confirmed disputes.

* Filter unconfirmed disputes in provisioner - prioritized_selection

* Add test for unconfirmed disputes handling

* Fix `dispute-distribution` tests

* Add Helikon boot nodes for Polkadot, Kusama and Westend. (paritytech#6240)

* Dedup subsystem name (paritytech#6305)

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Change best effort queue behaviour in `dispute-coordinator` (paritytech#6275)

* Change best effort queue behaviour in `dispute-coordinator`

Use the same type of queue (`BTreeMap<CandidateComparator,
ParticipationRequest>`) for best effort and priority in
`dispute-coordinator`.

Rework `CandidateComparator` to handle unavailable parent
block numbers.

Best effort queue will order disputes the same way as priority does - by
parent's block height. Disputes on candidates for which the parent's
block number can't be obtained will be treated with the lowest priority.

* Fix tests: Handle `ChainApiMessage::BlockNumber` in `handle_sync_queries`

* Some tests are deadlocking on sending messages via overseer so change `SingleItemSink`to `mpsc::Sender` with a buffer of 1

* Fix a race in test after adding a buffered queue for overseer messages

* Fix the rest of the tests

* Guide update - best-effort queue

* Guide update: clarification about spam votes

* Fix tests in `availability-distribution`

* Update comments

* Add `make_buffered_subsystem_context` in `subsystem-test-helpers`

* Code review feedback

* Code review feedback

* Code review feedback

* Don't add best effort candidate if it is already in priority queue

* Remove an old comment

* Fix insert in best_effort

* [ci] fix build implementers guide (paritytech#6306)

* [ci] fix build implementers guide

* add comment

* rm git fetch from publish-docs

* Remove the `wasmtime` feature flag (companion for substrate#12684) (paritytech#6268)

* Remove the `wasmtime` feature flag

* Update `substrate` to the newest `master`

* Update `substrate` to the newest `master`

* Add `starts_with` to v0 and v1 MultiLocation (paritytech#6311)

* add `starts_with` to v0 and v1 MultiLocation

* add tests

* fmt

* Extend lower bound of `manage_lease_period_start` from `runtime_common::slots` (paritytech#6318)

* Update async-trait version to v0.1.58 (paritytech#6319)

* Update async-trait version

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Add PVF module documentation (paritytech#6293)

* Add PVF module documentation

TODO (once the PRs land):

- [ ] Document executor parametrization.

- [ ] Document CPU time measurement of timeouts.

* Update node/core/pvf/src/lib.rs

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* Clarify meaning of PVF acronym

* Move PVF doc to implementer's guide

* Clean up implementer's guide a bit

* Add page for PVF types

* pvf: Better separation between crate docs and implementer's guide

* ci: Add "prevalidating" to the dictionary

* ig: Remove types/chain.md

The types contained therein did not exist and the file was not referenced
anywhere.

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* Rate limit improvements (paritytech#6315)

* We actually don't need to rate limit redundant requests.

Those redundant requests should not actually happen, but still.

* Add some logging.

* Also log message when the receiving side hit the rate limit.

* Update node/network/dispute-distribution/src/sender/mod.rs

Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>

Co-authored-by: eskimor <eskimor@no-such-url.com>
Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>

* [ci] fix build-implementers-guide (paritytech#6335)

* [ci] fix build-implementers-guide

* fix user

* Added Amforc bootnodes for Polkadot and Kusama (paritytech#6077)

* add wss and update dns

* fix wrong node id

* ig: Fix description of execution retry delay (paritytech#6342)

The delay is 3s and not 1s. I removed the reference to a specific number of
seconds as it may be too specific for a high-level description.

* Add support for outbound only configs on request/response protocols (paritytech#6343)

* Add option ot add outbound_only configurations

* Improve comment

* cargo update -p sp-io (paritytech#6351)

* Add more granularity to prometheus histogram buckets (paritytech#6348)

* Add buckets below 5ms

* Add more specific histogram buckets

* Add more specific buckets

* cargo fmt

* Provide some more granular metrics for polkadot_pvf_execution_time (paritytech#6346)

* [ci] fix implementer guide job (paritytech#6357)

* [DNM] debug implementer guide job

* remove git depth

* change git strategy

* add git depth

* try k8s runner

* fix k8s template

* test job

* fix test

* fix

* return pipeline back

* enable disabled deploy-parity-testnet

* dispute-coordinator: fix earliest session checks for pruning and import (paritytech#6358)

* RollingSession: add fn contains

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* handle_import_statements fix ancient dispute check

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* work with earliest session instead of latest

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* update comment

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* remove executed migrations (0.9.33) (paritytech#6364)

* Companion for: pallet-mmr: move offchain logic to client-side gadget (paritytech#6321)

* Spawn MMR gadget when offchain indexing is enabled

* companion PR code review changes: 1st iteration

* Code review changes: 2nd iteration

* update lockfile for {"substrate"}

Co-authored-by: acatangiu <adrian@parity.io>
Co-authored-by: parity-processbot <>

* Remove `parity-util-mem` from `runtime-api` cache (paritytech#6367)

* Add Collectives as Trusted Teleporter (paritytech#6326)

* add collectives as trusted teleporter

* fix statemint-specific doc

* sync versions with current release (0.9.33) (paritytech#6363)

* westend: update transaction version

* polkadot: update transaction version

* kusama: update transaction version

* Bump spec_version to 9330

* bump versions to 0.9.33

* Clippyfy (paritytech#6341)

* Add clippy config and remove .cargo from gitignore

* first fixes

* Clippyfied

* Add clippy CI job

* comment out rusty-cachier

* minor

* fix ci

* remove DAG from check-dependent-project

* add DAG to clippy

Co-authored-by: alvicsam <alvicsam@gmail.com>

* Companion for: MMR: move RPC code from frame/ to client/ (paritytech#6369)

* rpc: mmr rpc crate name change

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* support opengov calls in proxy definitions (paritytech#6366)

* Use CPU clock timeout for PVF jobs (paritytech#6282)

* Put in skeleton logic for CPU-time-preparation

Still needed:
- Flesh out logic
- Refactor some spots
- Tests

* Continue filling in logic for prepare worker CPU time changes

* Fix compiler errors

* Update lenience factor

* Fix some clippy lints for PVF module

* Fix compilation errors

* Address some review comments

* Add logging

* Add another log

* Address some review comments; change Mutex to AtomicBool

* Refactor handling response bytes

* Add CPU clock timeout logic for execute jobs

* Properly handle AtomicBool flag

* Use `Ordering::Relaxed`

* Refactor thread coordination logic

* Fix bug

* Add some timing information to execute tests

* Add section about the mitigation to the IG

* minor: Change more `Ordering`s to `Relaxed`

* candidate-validation: Fix build errors

* guide: remove refences to outdated secondary checkers (paritytech#6309)

* guide: remove refences to outdated secondary checkers

* Update roadmap/implementers-guide/src/glossary.md

* guide: remove refences to Fisherman

* revert changes to roadmap/parachains.md

* Kusama: approve/reject treasury prop by treasurer (paritytech#6354)

* Add buckets on lower end of distribution to network bridge latency metrics (paritytech#6359)

* Add two more buckets on lower end of distribution

* add even smaller buckets

* cargo fmt

* Reduce provisioner work (paritytech#6328)

* Store values needed to create inherent data when needed instead of creating them early on

* Point deps to substrate branch

* Arc the client

* Cargo update

* Fix main cargo files

* Undo cargo file changes

* Add overseer dep to inherents

* Update deps

* Simplify code

* Update benchmark

* Update node/client/src/benchmarking.rs

Co-authored-by: Bastian Köcher <info@kchr.de>

* Update node/core/parachains-inherent/src/lib.rs

Co-authored-by: Bastian Köcher <info@kchr.de>

* Update node/core/parachains-inherent/src/lib.rs

Co-authored-by: Bastian Köcher <info@kchr.de>

* Revert "Update node/core/parachains-inherent/src/lib.rs"

This reverts commit 8b9555d.

* Revert "Update node/core/parachains-inherent/src/lib.rs"

This reverts commit 816c92d.

* cargo update -p sp-io

* fmt

Co-authored-by: Bastian Köcher <info@kchr.de>

* update deprecated alias `--all` (paritytech#6383)

`--all` is a deprecated alias for `--workspace` (https://doc.rust-lang.org/cargo/commands/cargo-test.html)

* Upgrade tokio to 1.22.0 (paritytech#6262)

Co-authored-by: Sebastian Kunert <skunert49@gmail.com>

* Set polkadot version in one place (paritytech#6095)

* rust 1.64 enables workspace properties

* add edition, repository and authors.

* of course, update the version in one place.

Co-authored-by: Andronik <write@reusable.software>

* Introduce NIS functionality into Kusama/Rococo (paritytech#6352)

* Integrate NIS into Kusama/Rococo

* Missing files

* Fix

* Fix

* Formatting

* Add Kusama weights

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add Rococo weights

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Use weights

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Bump

* Bump

* ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_nis

* ".git/.scripts/bench-bot.sh" runtime rococo-dev pallet_nis

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>

* OpenGov improvements for Kusama (paritytech#6372)

* Tweaks to optimise gov2

* Use new inactive funds

* Introduce migrations

* Fixes

* Fixes

* Fixes

* Some constant updates for Fellowship

* Further tweaks

* Lower floor for whitelisted

* Tweak some NIS params (paritytech#6393)

* Reduce base period, increase queue count

* Reduce base period, increase queue count

* allow root with gov2 origins (paritytech#6390)

* Bump Substrate (paritytech#6394)

* crowdloan: Fix migration. (paritytech#6397)

The migration would not have been run because of the `current_version ==
1` check.

* Companion of Substrate PR 12837 (paritytech#6385)

* rename some crates for publishing to crates.io

* s/remote-ext/frame-remote-externalities

* cargo update

* Make submission deposit reasonable (paritytech#6402)

* kusama whitelist pallet preimage dep upgrade (paritytech#6392)

* Bump (paritytech#6404)

* Companion for paritytech/substrate#12795 (paritytech#6374)

* Begin removing `parity-util-mem`; remove `collect_memory_stats`

* Update some dependencies that were using `parity-util-mem`

* Remove `trie-memory-tracker` feature

* Update Cargo.lock

* Update `kvdb-shared-tests`

* Add back jemalloc

* Add missing license header

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
Co-authored-by: Andronik <write@reusable.software>

* Let the PVF host kill the worker on timeout (paritytech#6381)

* Let the PVF host kill the worker on timeout

* Fix comment

* Fix inaccurate comments; add missing return statement

* Fix a comment

* Fix comment

* Companion for paritytech/substrate#12788 (paritytech#6360)

* Companion for paritytech/substrate#12788

* migrations

* rustfmt

* update lockfile for {"substrate"}

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Make sure to preserve backing votes (paritytech#6382)

* Guide updates

* Consider more dead forks.

* Ensure backing votes don't get overridden.

* Fix spelling.

* Fix comments.

* Update node/primitives/src/lib.rs

Co-authored-by: Tsvetomir Dimitrov <tsvetomir@parity.io>

Co-authored-by: eskimor <eskimor@no-such-url.com>
Co-authored-by: Tsvetomir Dimitrov <tsvetomir@parity.io>

* Refactoring to condense disputes tests (paritytech#6395)

* Refactoring to condense disputes tests

* Removing unhelpful comment lines

* Addressing Tsveto's suggestions

* Fixing formatting nit

* [ci] Adjust check-runtime-migration job (paritytech#6107)

* [WIP][ci] Add node to check-runtime-migration job

* add image

* remove sscache from before_script

* add nodes

* restart pipeline

* restart pipeline2

* disable other jobs

* debug

* remove debug

* add ports

* restart pipeline

* restart pipeline

* restart pipeline

* try kusama first

* run polkadot 1st

* disable some jobs

* try command from command bot

* cargo run

* test passing variables

* run without condition

* adjust kusama and westend

* fix

* return jobs

* fix small nits

* split check-runtime-migration

Co-authored-by: parity-processbot <>

* update weights (sync with 0.9.33) (paritytech#6362)

* update weights (0.9.33) (paritytech#6299)

* kusama: update weights

* polkadot: update weights

* rococo: update weights

* westend: update weights

* fix deps

* Resolve merge

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Reset Kusama whitelist weights

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Feature gate test `benchmark_storage_works` (paritytech#6376)

* Feature gate storage bench test

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* typo

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: parity-processbot <>

* Companion for paritytech/substrate#12868 (paritytech#6406)

* Replace WEIGHT_PER_* with WEIGHT_REF_TIME_PER_*

* cargo fmt

* Update substrate

* OpenGov: Tweak parameters further (paritytech#6416)

* Tweak parameters further

* Further tweaks to deposits

* companion for #12663 jsonrpsee v0.16 (paritytech#6339)

* companion for #12663 jsonrpsee v0.16.1

* update substrate

* merge master

* Update rpc/Cargo.toml

Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>

* Update utils/staking-miner/Cargo.toml

Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>

* update lockfile for {"substrate"}

Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Co-authored-by: parity-processbot <>

* CI: Remove the excessive variable declaration (paritytech#6426)

* companion slash chilling update (paritytech#6424)

* update weights

* goddamit

* update weights

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* swap error responses (paritytech#6421)

* [ci] fix check-transaction-versions (paritytech#6425)

* [ci] fix check-transaction-versions

* allow fail the job

* approval-distribution: batched approval/assignment sending (paritytech#6401)

* Imple batched send

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Add batch tests

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* pub MAX_NOTIFICATION_SIZE

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* spell check

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* spellcheck ...

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Fix comment

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* o.O

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* 2 constants

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* Ensure batch size is at least 1 element

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* feedback impl

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>

* add westend bootnode (paritytech#6434)

* [ci] add job switcher (paritytech#6433)

* [ci] add job switcher

* add before_script to docker and k8s runners

* upd runners

* sccache :(

* companion for try-runtime revamp (paritytech#6187)

* update to reflect latest try-runtime stuff

* update to latest version

* fix

* fix miner

* update

* update

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>

* Fix wrong rate limit + add a few logs. (paritytech#6440)

* Add trace log

* More tracing.

* Fix redundant rate limit.

* Add trace log.

* Improve logging.

Co-authored-by: eskimor <eskimor@no-such-url.com>

* Bump workspace unified version

* Bump spec_version to 9360

* fix diener output

* bump substrate

* clean up migrations

* bump version (0.9.36)

* sync transaction_version with 0.9.35 (compatible)

* sync transaction_version with 0.9.35 (compatible)

* update weights (0.9.36) (paritytech#6450)

* polkadot: update weights (0.9.36)

* kusama: update weights (0.9.36)

* rococo: update weights (0.9.36)

* westend: update weights (0.9.36)

* delete unnecessary files

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Signed-off-by: Andrei Sandu <andrei-mihail@parity.io>
Signed-off-by: koushiro <koushiro.cqx@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: Mara Robin B <mara@broda.me>
Co-authored-by: Boluwatife Bakre <tifebakre@yahoo.co.uk>
Co-authored-by: Andronik <write@reusable.software>
Co-authored-by: Marcin S <marcin@bytedude.com>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Dan Shields <35669742+NukeManDan@users.noreply.github.com>
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: eskimor <eskimor@users.noreply.github.com>
Co-authored-by: eskimor <eskimor@no-such-url.com>
Co-authored-by: Javier Viola <javier@parity.io>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Co-authored-by: Michal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com>
Co-authored-by: alexgparity <115470171+alexgparity@users.noreply.github.com>
Co-authored-by: Sergej Sakac <73715684+Szegoo@users.noreply.github.com>
Co-authored-by: Tom <tsenseless@gmail.com>
Co-authored-by: senseless <tom@stake.plus>
Co-authored-by: Xiliang Chen <xlchen1291@gmail.com>
Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Ankan <10196091+Ank4n@users.noreply.github.com>
Co-authored-by: Qinxuan Chen <koushiro.cqx@gmail.com>
Co-authored-by: Robert Hambrock <roberthambrock@gmail.com>
Co-authored-by: moh-eulith <101080211+moh-eulith@users.noreply.github.com>
Co-authored-by: Squirrel <gilescope@gmail.com>
Co-authored-by: cheme <emericchevalier.pro@gmail.com>
Co-authored-by: Bradley Olson <34992650+BradleyOlson64@users.noreply.github.com>
Co-authored-by: Tsvetomir Dimitrov <tsvetomir@parity.io>
Co-authored-by: Kutsal Kaan Bilgin <kutsalbilgin@gmail.com>
Co-authored-by: Koute <koute@users.noreply.github.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com>
Co-authored-by: Alexandru Vasile <60601340+lexnv@users.noreply.github.com>
Co-authored-by: tugy <33746108+tugytur@users.noreply.github.com>
Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
Co-authored-by: Mattia L.V. Bradascio <28816406+bredamatt@users.noreply.github.com>
Co-authored-by: Serban Iorga <serban@parity.io>
Co-authored-by: acatangiu <adrian@parity.io>
Co-authored-by: alvicsam <alvicsam@gmail.com>
Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com>
Co-authored-by: amab8901 <83634595+amab8901@users.noreply.github.com>
Co-authored-by: Dmitry Markin <dmitry@markin.tech>
Co-authored-by: Gavin Wood <gavin@parity.io>
Co-authored-by: João Paulo Silva de Souza <77391175+joao-paulo-parity@users.noreply.github.com>
Co-authored-by: Vlad <vladimir@parity.io>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D3-trivial 🧸 PR contains trivial changes in a runtime directory that do not require an audit.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Switch PVF preparation to CPU time
6 participants