Skip to content
Snippets Groups Projects
  • Max Inden's avatar
    client/network-gossip/src/bridge: Finish when network event stream closes (#5282) · 9201f8ab
    Max Inden authored
    * client/network-gossip/src/bridge: Finish when network even stream closes
    
    Previously within `<GossipEngine as Future>::poll` one would poll the
    `network_event_stream` ignoring all messages other than
    `Poll::Ready(Some())`. Ignoring `Poll::Ready(None)` leads to a panic on
    the next poll of the stream, gien that it is not fused.
    
    By design `network_event_stream` does not close unless an unbounded send
    into it fails, or the `NetworkWorker` gets shut down.
    
    > The stream never ends (unless the `NetworkWorker` gets shut down).
    > (client/network/src/service.rs)
    
    An `unbounded_send` to fail on an unbounded channel is unlikely. The
    `NetworkWorker` shutting down is not unlikely. In such case the
    `GossipEngine` should shut down as well.
    
    With this patch a `<GossipEngine as Future>` finishes on
    `Poll::Ready(None)` returned from `network_event_stream`.
    
    * client/finality-grandpa/communication: Error on gossip engine finished
    
    Have `<NetworkBridge as Future>::poll` return `Poll::Ready(Err)` instead
    of `Poll::Ready(Ok)` to be consistent with the handling of the neighbor
    packet worker stream and the gossip validator report stream. Both `Err`
    as well as `Ok` shut down the `NetworkBridge` as well as the
    `VoterWorker`.
    
    * client/network-gossip/src/bridge: Add regression test
    
    * client/network-gossip: Move substrate test client to dev dependencies
    
    * client/network-gossip: Remove TODO
    
    Addressed in a follow up pull request.
    
    * client/network-gossip/bridge: Put match on newline after loop
    
    * client/finality-grandpa/src/observer: Fix regression test
    
    Make sure the event stream sender side is not dropped till the end.
    9201f8ab
Code owners
Assign users and groups as approvers for specific file changes. Learn more.