1. May 31, 2023
  2. May 30, 2023
    • Tsvetomir Dimitrov's avatar
      `RollingSessionWindow` cleanup (#7204) · eb1ed63b
      Tsvetomir Dimitrov authored
      
      
      * Replace `RollingSessionWindow` with `RuntimeInfo` - initial commit
      
      * Fix tests in import
      
      * Fix the rest of the tests
      
      * Remove dead code
      
      * Fix todos
      
      * Simplify session caching
      
      * Comments for `SessionInfoProvider`
      
      * Separate `SessionInfoProvider` from `State`
      
      * `cache_session_info_for_head` becomes freestanding function
      
      * Remove unneeded `mut` usage
      
      * fn session_info -> fn get_session_info() to avoid name clashes. The function also tries to initialize `SessionInfoProvider`
      
      * Fix SessionInfo retrieval
      
      * Code cleanup
      
      * Don't wrap `SessionInfoProvider` in an `Option`
      
      * Remove `earliest_session()`
      
      * Remove pre-caching -> wip
      
      * Fix some tests and code cleanup
      
      * Fix all tests
      
      * Fixes in tests
      
      * Fix comments, variable names and small style changes
      
      * Fix a warning
      
      * impl From<SessionWindowSize> for NonZeroUsize
      
      * Fix logging for `get_session_info` - remove redundant logs and decrease log level to DEBUG
      
      * Code review feedback
      
      * Storage migration removing `COL_SESSION_WINDOW_DATA` from parachains db
      
      * Remove `col_session_data` usages
      
      * Storage migration clearing columns w/o removing them
      
      * Remove session data column usages from `approval-voting` and `dispute-coordinator` tests
      
      * Add some test cases from `RollingSessionWindow` to `dispute-coordinator` tests
      
      * Fix formatting in initialized.rs
      
      * Fix a corner case in `SessionInfo` caching for `dispute-coordinator`
      
      * Remove `RollingSessionWindow` ;(
      
      * Revert "Fix formatting in initialized.rs"
      
      This reverts commit 0f94664ec9f3a7e3737a30291195990e1e7065fc.
      
      * v2 to v3 migration drops `COL_DISPUTE_COORDINATOR_DATA` instead of clearing it
      
      * Fix `NUM_COLUMNS` in `approval-voting`
      
      * Use `columns::v3::NUM_COLUMNS` when opening db
      
      * Update node/service/src/parachains_db/upgrade.rs
      
      Co-authored-by: default avatarAndrei Sandu <[email protected]>
      
      * Don't write in `COL_DISPUTE_COORDINATOR_DATA` for `test_rocksdb_migrate_2_to_3`
      
      * Fix `NUM+COLUMNS` in approval_voting
      
      * Fix formatting
      
      * Fix columns usage
      
      * Clarification comments about the different db versions
      
      ---------
      
      Co-authored-by: default avatarAndrei Sandu <[email protected]>
      eb1ed63b
  3. May 29, 2023
  4. May 26, 2023
  5. May 25, 2023
    • Marcin S.'s avatar
      PVF: Refactor workers into separate crates, remove host dependency (#7253) · 8782dde4
      Marcin S. authored
      * PVF: Refactor workers into separate crates, remove host dependency
      
      * Fix compile error
      
      * Remove some leftover code
      
      * Fix compile errors
      
      * Update Cargo.lock
      
      * Remove worker main.rs files
      
      I accidentally copied these from the other PR. This PR isn't intended to
      introduce standalone workers yet.
      
      * Address review comments
      
      * cargo fmt
      
      * Update a couple of comments
      
      * Update log targets
      8782dde4
  6. May 24, 2023
  7. May 23, 2023
  8. May 19, 2023
  9. May 17, 2023
    • Tsvetomir Dimitrov's avatar
      Revert chain if at least f+1 validators voted against a candidate (#7151) · 0759495c
      Tsvetomir Dimitrov authored
      * Make `issue_explicit_statement_with_index` regular function
      
      * Make `issue_backing_statement_with_index` regular function
      
      * Issue `RevertBlocks` as soon as a dispute has `byzantine threshold + 1` invalid votes.
      
      * Remove a comment
      
      * Fix `has_fresh_byzantine_threshold_against()`
      
      * Extend `informs_chain_selection_when_dispute_concluded_against` test
      0759495c
  10. May 16, 2023
    • Marcin S.'s avatar
      PVF: Vote invalid on panics in execution thread (after a retry) (#7155) · 82e4dbcc
      Marcin S. authored
      * PVF: Remove `rayon` and some uses of `tokio`
      
      1. We were using `rayon` to spawn a superfluous thread to do execution, so it was removed.
      
      2. We were using `rayon` to set a threadpool-specific thread stack size, and AFAIK we couldn't do that with `tokio` (it's possible [per-runtime](https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html#method.thread_stack_size) but not per-thread). Since we want to remove `tokio` from the workers [anyway](https://github.com/paritytech/polkadot/issues/7117), I changed it to spawn threads with the `std::thread` API instead of `tokio`.[^1]
      
      [^1]: NOTE: This PR does not totally remove the `tokio` dependency just yet.
      
      3. Since `std::thread` API is not async, we could no longer `select!` on the threads as futures, so the `select!` was changed to a naive loop.
      
      4. The order of thread selection was flipped to make (3) sound (see note in code).
      
      I left some TODO's related to panics which I'm going to address soon as part of https://github.com/paritytech/polkadot/issues/7045.
      
      * PVF: Vote invalid on panics in execution thread (after a retry)
      
      Also make sure we kill the worker process on panic errors and internal errors to
      potentially clear any error states independent of the candidate.
      
      * Address a couple of TODOs
      
      Addresses a couple of follow-up TODOs from
      https://github.com/paritytech/polkadot/pull/7153
      
      .
      
      * Add some documentation to implementer's guide
      
      * Fix compile error
      
      * Fix compile errors
      
      * Fix compile error
      
      * Update roadmap/implementers-guide/src/node/utility/candidate-validation.md
      
      Co-authored-by: default avatarAndrei Sandu <[email protected]>
      
      * Address comments + couple other changes (see message)
      
      - Measure the CPU time in the prepare thread, so the observed time is not
        affected by any delays in joining on the thread.
      
      - Measure the full CPU time in the execute thread.
      
      * Implement proper thread synchronization
      
      Use condvars i.e. `Arc::new((Mutex::new(true), Condvar::new()))` as per the std
      docs.
      
      Considered also using a condvar to signal the CPU thread to end, in place of an
      mpsc channel. This was not done because `Condvar::wait_timeout_while` is
      documented as being imprecise, and `mpsc::Receiver::recv_timeout` is not
      documented as such. Also, we would need a separate condvar, to avoid this case:
      the worker thread finishes its job, notifies the condvar, the CPU thread returns
      first, and we join on it and not the worker thread. So it was simpler to leave
      this part as is.
      
      * Catch panics in threads so we always notify condvar
      
      * Use `WaitOutcome` enum instead of bool condition variable
      
      * Fix retry timeouts to depend on exec timeout kind
      
      * Address review comments
      
      * Make the API for condvars in workers nicer
      
      * Add a doc
      
      * Use condvar for memory stats thread
      
      * Small refactor
      
      * Enumerate internal validation errors in an enum
      
      * Fix comment
      
      * Add a log
      
      * Fix test
      
      * Update variant naming
      
      * Address a missed TODO
      
      ---------
      
      Co-authored-by: default avatarAndrei Sandu <[email protected]>
      82e4dbcc
    • Marcin S.'s avatar
      b75b137b
  11. May 15, 2023
  12. May 12, 2023
    • Tsvetomir Dimitrov's avatar
      Replace `RollingSessionWindow` in approval-voting with `RuntimeInfo` (#7123) · 12dd9277
      Tsvetomir Dimitrov authored
      * Replace `RollingSessionWindow` with `RuntimeInfo` - initial commit
      
      * Fix tests in import
      
      * Fix the rest of the tests
      
      * Remove dead code
      
      * Fix todos
      
      * Simplify session caching
      
      * Comments for `SessionInfoProvider`
      
      * Separate `SessionInfoProvider` from `State`
      
      * `cache_session_info_for_head` becomes freestanding function
      
      * Remove unneeded `mut` usage
      
      * fn session_info -> fn get_session_info() to avoid name clashes. The function also tries to initialize `SessionInfoProvider`
      
      * Fix SessionInfo retrieval
      
      * Code cleanup
      
      * Don't wrap `SessionInfoProvider` in an `Option`
      
      * Remove `earliest_session()`
      
      * Remove pre-caching -> wip
      
      * Fix some tests and code cleanup
      
      * Fix all tests
      
      * Fixes in tests
      
      * Fix comments, variable names and small style changes
      
      * Fix a warning
      
      * impl From<SessionWindowSize> for NonZeroUsize
      
      * Fix logging for `get_session_info` - remove redundant logs and decrease log level to DEBUG
      
      * Code review feedback
      12dd9277
    • Arkadiy Paronyan's avatar
      Bump parity-db (#7209) · 3b91d778
      Arkadiy Paronyan authored
      3b91d778
  13. May 11, 2023
  14. May 10, 2023
  15. May 08, 2023
    • Chris Sosnin's avatar
      paras: dismiss `pvf_checking_enabled` configuration (#7138) · 9c08536d
      Chris Sosnin authored
      * paras: unconditionally precheck pvfs
      
      * Update integration tests
      
      * paras_registrar tests
      
      * runtime benchmark tests
      
      * fix bench
      
      * bypass prechecking in test node
      
      * adjust bench
      
      * ".git/.scripts/commands/bench/bench.sh" runtime polkadot runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime kusama runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime rococo runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime westend runtime_parachains::paras
      
      * use test helper
      
      * fix new test
      
      ---------
      
      Co-authored-by: command-bot <>
      9c08536d
    • Oliver Tale-Yazdi's avatar
      Tests can use dbg macro (#7197) · 580111dd
      Oliver Tale-Yazdi authored
      
      
      There is a deny(clippy::dbg_macro) in the crate root, so newer
      Clippy fails here since tests use dbg.
      But dbg in tests are fine IMHO.
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      580111dd
  16. May 07, 2023
  17. May 05, 2023
  18. May 04, 2023
  19. Apr 28, 2023
  20. Apr 26, 2023
  21. Apr 25, 2023
  22. Apr 24, 2023
    • Andrei Sandu's avatar
      Fix rolling session window (#7126) · 634b2f6a
      Andrei Sandu authored
      * Use stored sessions 🤦
      
      
      
      Signed-off-by: default avatarAndrei Sandu <[email protected]>
      
      * Add test
      
      Signed-off-by: default avatarAndrei Sandu <[email protected]>
      
      * remove redundant
      
      Signed-off-by: default avatarAndrei Sandu <[email protected]>
      
      ---------
      
      Signed-off-by: default avatarAndrei Sandu <[email protected]>
      634b2f6a
    • Tsvetomir Dimitrov's avatar
      Rework `dispute-coordinator` to use `RuntimeInfo` for obtaining session... · 3f4ce632
      Tsvetomir Dimitrov authored
      
      Rework `dispute-coordinator` to use `RuntimeInfo` for obtaining session information instead of `RollingSessionWindow` (#6968)
      
      * Pass `SessionInfo` directly to `CandidateEnvironment::new` otherwise it should be an async function
      
      * Replace calls to `RollingSessionWindow` with `RuntimeInfo`
      
      Adjust `dispute-coordinator` initialization to use `RuntimeInfo`
      
      * Modify `dispute-coordinator` initialization
      
      * Pass `Hash` to `process_on_chain_votes` so that `RuntimeInfo` calls can be made
      
      Remove some fixmes
      
      * Pass `Hash` to `handle_import_statements` to perform `RuntimeInfo` calls
      
      * remove todo comments
      
      * Remove `error` from `Initialized`
      
      Rework new session handling code
      
      * Remove db code which is no longer used
      
      * Update stale comment and remove unneeded type specification
      
      * Cache SessionInfo on startup
      
      * Use `DISPUTE_WINDOW` from primitives
      
      * Fix caching in `process_active_leaves_update`
      
      * handle_import_statements: leaf_hash -> block_hash
      
      * Restore `ensure_available_session_info`
      
      * Don't interrupt `process_on_chain_votes` if SessionInfo can't be fetched
      
      * Small style improvements in logging
      
      * process_on_chain_votes: leaf_hash -> block_hash
      
      * Restore `note_earliest_session` - it is required to prune disputes and votes
      
      * Cache new sessions only when there is an actual session change
      
      * Fix tests
      
      * `CandidateEnvironment::new` gets `session_idx` and fetches SessionInfo by itself to avoid the invariant where the input SessionIndex and SessionInfo parameters don't match
      
      * Fix handling of missing session info
      
      * Move sessions caching in `handle_startup` and fix tests
      
      * Load `relay_parent` from db in `handle_import_statements` instead of passing it as a parameter via two functions
      
      * Don't do two db reads
      
      * Fix the twisted logic in `handle_import_statements`
      
      * fixup
      
      * Small style fix
      
      * Decrease log levels for caching errors to debug and fix a typo
      
      * Update outdated comment
      
      * Remove `ensure_available_session_info`
      
      * Load relay parent from db in `process_on_chain_votes`
      
      * Revert "Load relay parent from db in `process_on_chain_votes`"
      
      This reverts commit 978ad4f223d517faa7a7fbad96e3f8de4fa17501.
      
      * Keep track of highest seen session and last session cached without gaps.
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarordian <[email protected]>
      
      * Handle session caching failure on startup correctly
      
      * Update node/core/dispute-coordinator/src/initialized.rs
      
      Co-authored-by: default avatarordian <[email protected]>
      
      * Simplify session caching retries
      
      * Update stale comment
      
      * Fix lower bound calculation for session caching
      
      ---------
      
      Co-authored-by: default avatarordian <[email protected]>
      3f4ce632
  23. Apr 21, 2023
    • ordian's avatar
      update rocksdb to 0.20.1 (#7113) · 439ab875
      ordian authored
      * update rocksdb to 0.20.1
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      439ab875
    • Marcin S.'s avatar
      PVF: Move PVF workers into separate crate (#7101) · e277f95b
      Marcin S. authored
      * Move PVF workers into separate crate
      
      * Fix indentation
      
      * Fix compilation errors
      
      * Fix more compilation errors
      
      * Rename `worker.rs` files, make host interface to worker more clear
      
      * Fix more compilation errors
      
      * Fix more compilation errors
      
      * Add link to issue
      
      * Address review comments
      
      * Update comment
      e277f95b
  24. Apr 20, 2023
    • Marcin S.'s avatar
      PVF: Don't dispute on missing artifact (#7011) · 0940cdd1
      Marcin S. authored
      * PVF: Don't dispute on missing artifact
      
      A dispute should never be raised if the local cache doesn't provide a certain
      artifact. You can not dispute based on this reason, as it is a local hardware
      issue and not related to the candidate to check.
      
      Design:
      
      Currently we assume that if we prepared an artifact, it remains there on-disk
      until we prune it, i.e. we never check again if it's still there.
      
      We can change it so that instead of artifact-not-found triggering a dispute, we
      retry once (like we do for AmbiguousWorkerDeath, except we don't dispute if it
      still doesn't work). And when enqueuing an execute job, we check for the
      artifact on-disk, and start preparation if not found.
      
      Changes:
      
      - [x] Integration test (should fail without the following changes)
      - [x] Check if artifact exists when executing, prepare if not
      - [x] Return an internal error when file is missing
      - [x] Retry once on internal errors
      - [x] Document design (update impl guide)
      
      * Add some context to wasm error message (it is quite long)
      
      * Fix impl guide
      
      * Add check for missing/inaccessible file
      
      * Add comment referencing Substrate issue
      
      * Add test for retrying internal errors
      
      ---------
      
      Co-authored-by: parity-processbot <>
      0940cdd1