1. 27 Sep, 2021 1 commit
    • Robert Klotzner's avatar
      Log info about low connectivity and unreachable validators (#3916) · 0c2a0fd9
      Robert Klotzner authored
      * Attempt to add log stats to gossip-support.
      
      * WIP: Keep track of connected validators.
      
      * Clarify metric.
      
      * WIP: Make gossip support report connectivity.
      
      * WIP: Fixing tests.
      
      * Fix network bridge + integrate in overseer.
      
      * Consistent naming.
      
      * Fix logic error
      
      * cargo fmt
      
      * Pretty logs.
      
      * cargo fmt
      
      * Use `Delay` to trigger periodic checks.
      
      * fmt
      
      * Fix warning for authority set size of 1.
      
      * More correct ratio report if there are no resolved validators.
      
      * Prettier rendering of empty set.
      
      * Fix typo.
      
      * Another typo.
      
      * Don't check on every leaf update.
      
      * Make compatible with older rustc.
      
      * Fix tests.
      
      * Demote warning.
      0c2a0fd9
  2. 12 Aug, 2021 1 commit
    • Robert Klotzner's avatar
      Remove request multiplexer (#3624) · 117466aa
      Robert Klotzner authored
      * WIP: Get rid of request multiplexer.
      
      * WIP
      
      * Receiver for handling of incoming requests.
      
      * Get rid of useless `Fault` abstraction.
      
      The things the type system let us do are not worth getting abstracted in
      its own type. Instead error handling is going to be merely a pattern.
      
      * Make most things compile again.
      
      * Port availability distribution away from request multiplexer.
      
      * Formatting.
      
      * Port dispute distribution over.
      
      * Fixup statement distribution.
      
      * Handle request directly in collator protocol.
      
      + Only allow fatal errors at top level.
      
      * Use direct request channel for availability recovery.
      
      * Finally get rid of request multiplexer
      
      Fixes #2842 and paves the way for more back pressure possibilities.
      
      * Fix overseer and statement distribution tests.
      
      * Fix collator protocol and network bridge tests.
      
      * Fix tests in availability recovery.
      
      * Fix availability distribution tests.
      
      * Fix dispute distribution tests.
      
      * Add missing dependency
      
      * Typos.
      
      * Review remarks.
      
      * More remarks.
      117466aa
  3. 04 Aug, 2021 1 commit
  4. 02 Aug, 2021 1 commit
  5. 27 Jul, 2021 1 commit
  6. 09 Jul, 2021 1 commit
    • Robert Klotzner's avatar
      Dispute distribution implementation (#3282) · f9d71f8c
      Robert Klotzner authored
      * Dispute protocol.
      
      * Dispute distribution protocol.
      
      * Get network requests routed.
      
      * WIP: Basic dispute sender logic.
      
      * Basic validator determination logic.
      
      * WIP: Getting things to typecheck.
      
      * Slightly larger timeout.
      
      * More typechecking stuff.
      
      * Cleanup.
      
      * Finished most of the sending logic.
      
      * Handle active leaves updates
      
      - Cleanup dead disputes
      - Update sends for new sessions
      - Retry on errors
      
      * Pass sessions in already.
      
      * Startup dispute sending.
      
      * Provide incoming decoding facilities
      
      and use them in statement-distribution.
      
      * Relaxed runtime util requirements.
      
      We only need a `SubsystemSender` not a full `SubsystemContext`.
      
      * Better usability of incoming requests.
      
      Make it possible to consume stuff without clones.
      
      * Add basic receiver functionality.
      
      * Cleanup + fixes for sender.
      
      * One more sender fix.
      
      * Start receiver.
      
      * Make sure to send responses back.
      
      * WIP: Exposed authority discovery
      
      * Make tests pass.
      
      * Fully featured receiver.
      
      * Decrease cost of `NotAValidator`.
      
      * Make `RuntimeInfo` LRU cache size configurable.
      
      * Cache more sessions.
      
      * Fix collator protocol.
      
      * Disable metrics for now.
      
      * Make dispute-distribution a proper subsystem.
      
      * Fix naming.
      
      * Code style fixes.
      
      * Factored out 4x copied mock function.
      
      * WIP: Tests.
      
      * Whitespace cleanup.
      
      * Accessor functions.
      
      * More testing.
      
      * More Debug instances.
      
      * Fix busy loop.
      
      * Working tests.
      
      * More tests.
      
      * Cleanup.
      
      * Fix build.
      
      * Basic receiving test.
      
      * Non validator message gets dropped.
      
      * More receiving tests.
      
      * Test nested and subsequent imports.
      
      * Fix spaces.
      
      * Better formatted imports.
      
      * Import cleanup.
      
      * Metrics.
      
      * Message -> MuxedMessage
      
      * Message -> MuxedMessage
      
      * More review remarks.
      
      * Add missing metrics.rs.
      
      * Fix flaky test.
      
      * Dispute coordinator - deliver confirmations.
      
      * Send out `DisputeMessage` on issue local statement.
      
      * Unwire dispute distribution.
      
      * Review remarks.
      
      * Review remarks.
      
      * Better docs.
      f9d71f8c
  7. 08 Jul, 2021 1 commit
  8. 21 Jun, 2021 1 commit
    • asynchronous rob's avatar
      Chain Selection Subsystem Logic (#3277) · 70a4469d
      asynchronous rob authored
      
      
      * crate skeleton and type definitions
      
      * add ChainSelectionMessage
      
      * add error type
      
      * run loop
      
      * fix overseer
      
      * simplify determine_new_blocks API
      
      * write an overlay struct and fetch new blocks
      
      * add new function to overlay
      
      * more flow
      
      * add leaves to overlay and add a strong type around leaves-set
      
      * add is_parent_viable
      
      * implement block import, ignoring reversions
      
      * add stagnant-at to overlay
      
      * add stagnant
      
      * add revert consensus log
      
      * flow for reversions
      
      * extract and import block reversions
      
      * recursively update viability
      
      * remove redundant parameter from WriteBlockEntry
      
      * do some removal of viable leaves
      
      * address grumbles
      
      * refactor
      
      * address grumbles
      
      * add comment about non-monotonicity
      
      * extract backend to submodule
      
      * begin the hunt for viable leaves
      
      * viability pivots for updating the active leaves
      
      * remove LeafSearchFrontier
      
      * partially -> explicitly viable and untwist some booleans
      
      * extract tree to submodule
      
      * implement block finality update
      
      * Implement block approval routine
      
      * implement stagnant detection
      
      * ensure blocks pruned on finality are removed from the active leaves set
      
      * write down some planned test cases
      
      * floww
      
      * leaf loading
      
      * implement best_leaf_containing
      
      * write down a few more tests to do
      
      * remove dependence of tree on header
      
      * guide: ChainApiMessage::BlockWeight
      
      * node: BlockWeight ChainAPI
      
      * fix compile issue
      
      * note a few TODOs for the future
      
      * fetch block weight using new BlockWeight ChainAPI
      
      * implement unimplemented
      
      * sort leaves by block number after weight
      
      * remove warnings and add more TODOs
      
      * create test module
      
      * storage for test backend
      
      * wrap inner in mutex
      
      * add write waker query to test backend
      
      * Add OverseerSignal -> FromOverseer conversion
      
      * add test harnes
      
      * add no-op test
      
      * add some more test helpers
      
      * the first test
      
      * more progress on tests
      
      * test two subtrees
      
      * determine-new-blocks: cleaner genesis avoidance and tighter ancestry requests
      
      * don't make ancestry requests when asking for one block
      
      * add a couple more tests
      
      * add to AllMessages in guide
      
      * remove bad spaces from bridge
      
      * compact iterator
      
      * test import with gaps
      
      * more reversion tests
      
      * test finalization pruning subtrees
      
      * fixups
      
      * test clobbering and fix bug in overlay
      
      * exhaustive backend state after finalizaiton tested
      
      * more finality tests
      
      * leaf tests
      
      * test approval
      
      * test ChainSelectionMessage::Leaves thoroughly
      
      * remove TODO
      
      * avoid Ordering::is_ne so CI can build
      
      * comment algorithmic complexity
      
      * Update node/core/chain-selection/src/lib.rs
      
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      70a4469d
  9. 19 Jun, 2021 1 commit
  10. 17 Jun, 2021 1 commit
  11. 13 Jun, 2021 1 commit
    • asynchronous rob's avatar
      Dispute Coordinator Subsystem (#3150) · 19c1d29d
      asynchronous rob authored
      
      
      * skeleton for dispute-coordinator
      
      * add coordinator and participation message types
      
      * begin dispute-coordinator DB
      
      * functions for loading
      
      * implement strongly-typed DB transaction
      
      * add some tests for DB transaction
      
      * core logic for pruning
      
      * guide: update candidate-votes key for coordinator
      
      * update candidate-votes key
      
      * use big-endian encoding for session, and implement upper bound generator
      
      * finish implementing pruning
      
      * add a test for note_current_session
      
      * define state of the subsystem itself
      
      * barebones subsystem definition
      
      * control flow
      
      * more control flow
      
      * implement session-updating logic
      
      * trace
      
      * control flow for message handling
      
      * Update node/core/dispute-coordinator/src/lib.rs
      
      Co-authored-by: default avatarAndré Silva <123550+andresilva@users.noreply.github.com>
      
      * Update node/subsystem/src/messages.rs
      
      Co-authored-by: default avatarAndré Silva <123550+andresilva@users.noreply.github.com>
      
      * some more control flow
      
      * guide: remove overlay
      
      * more control flow
      
      * implement some DB getters
      
      * make progress on importing statements
      
      * add SignedDisputeStatement struct
      
      * move ApprovalVote to shared primitives
      
      * add a signing-payload API to explicit dispute statements
      
      * add signing-payload to CompactStatement
      
      * add relay-parent hash to seconded/valid dispute variatns
      
      * correct import
      
      * type-safe wrapper around dispute statements
      
      * use checked dispute statement in message type
      
      * extract rolling session window cache to subsystem-util
      
      * extract session window tests
      
      * approval-voting: use rolling session info cache
      
      * reduce dispute window to match runtime in practice
      
      * add byzantine_threshold and supermajority_threshold utilities to primitives
      
      * integrate rolling session window
      
      * Add PartialOrd to CandidateHash
      
      * add Ord to CandidateHash
      
      * implement active dispute update
      
      * add dispute messages to AllMessages
      
      * add dispute stubs to overseer
      
      * inform dispute participation to participate
      
      * implement issue_local_statement
      
      * implement `determine_undisputed_chain`
      
      * fix warnings
      
      * test harness for dispute coordinator tests
      
      * add more helpers to test harness
      
      * add some more helpers
      
      * some tests for dispute coordinator
      
      * ignore wrong validator indices
      
      * test finality voting rule constraint
      
      * add more tests
      
      * add variants to network bridge
      
      * fix test compilation
      
      * remove most dispute coordinator functionality
      
      as of #3222 we can do most of the work within the approval voting subsystem
      
      * Revert "remove most dispute coordinator functionality"
      
      This reverts commit 9cd615e8
      
      .
      
      * Use thiserror
      
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      
      * Update node/core/dispute-coordinator/src/lib.rs
      
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      
      * extract tests to separate module
      
      * address nit
      
      * adjust run_iteration API
      
      Co-authored-by: default avatarAndré Silva <123550+andresilva@users.noreply.github.com>
      Co-authored-by: default avatarBernhard Schuster <bernhard@ahoi.io>
      19c1d29d
  12. 12 Jun, 2021 1 commit
  13. 11 Jun, 2021 1 commit