Home / Input Output / ouroboros-network
Oct 14, 7-8 AM (1)
Oct 14, 8-9 AM (21)
Oct 14, 9-10 AM (0)
Oct 14, 10-11 AM (22)
Oct 14, 11-12 PM (0)
Oct 14, 12-1 PM (7)
Oct 14, 1-2 PM (1)
Oct 14, 2-3 PM (0)
Oct 14, 3-4 PM (3)
Oct 14, 4-5 PM (0)
Oct 14, 5-6 PM (0)
Oct 14, 6-7 PM (0)
Oct 14, 7-8 PM (0)
Oct 14, 8-9 PM (0)
Oct 14, 9-10 PM (0)
Oct 14, 10-11 PM (0)
Oct 14, 11-12 AM (0)
Oct 15, 12-1 AM (0)
Oct 15, 1-2 AM (0)
Oct 15, 2-3 AM (0)
Oct 15, 3-4 AM (0)
Oct 15, 4-5 AM (2)
Oct 15, 5-6 AM (0)
Oct 15, 6-7 AM (0)
Oct 15, 7-8 AM (0)
Oct 15, 8-9 AM (5)
Oct 15, 9-10 AM (1)
Oct 15, 10-11 AM (0)
Oct 15, 11-12 PM (0)
Oct 15, 12-1 PM (4)
Oct 15, 1-2 PM (2)
Oct 15, 2-3 PM (0)
Oct 15, 3-4 PM (2)
Oct 15, 4-5 PM (1)
Oct 15, 5-6 PM (0)
Oct 15, 6-7 PM (1)
Oct 15, 7-8 PM (19)
Oct 15, 8-9 PM (0)
Oct 15, 9-10 PM (0)
Oct 15, 10-11 PM (0)
Oct 15, 11-12 AM (1)
Oct 16, 12-1 AM (0)
Oct 16, 1-2 AM (0)
Oct 16, 2-3 AM (0)
Oct 16, 3-4 AM (0)
Oct 16, 4-5 AM (0)
Oct 16, 5-6 AM (0)
Oct 16, 6-7 AM (0)
Oct 16, 7-8 AM (0)
Oct 16, 8-9 AM (0)
Oct 16, 9-10 AM (0)
Oct 16, 10-11 AM (0)
Oct 16, 11-12 PM (0)
Oct 16, 12-1 PM (0)
Oct 16, 1-2 PM (0)
Oct 16, 2-3 PM (0)
Oct 16, 3-4 PM (0)
Oct 16, 4-5 PM (0)
Oct 16, 5-6 PM (0)
Oct 16, 6-7 PM (0)
Oct 16, 7-8 PM (0)
Oct 16, 8-9 PM (0)
Oct 16, 9-10 PM (0)
Oct 16, 10-11 PM (0)
Oct 16, 11-12 AM (0)
Oct 17, 12-1 AM (0)
Oct 17, 1-2 AM (0)
Oct 17, 2-3 AM (0)
Oct 17, 3-4 AM (0)
Oct 17, 4-5 AM (0)
Oct 17, 5-6 AM (0)
Oct 17, 6-7 AM (0)
Oct 17, 7-8 AM (0)
Oct 17, 8-9 AM (0)
Oct 17, 9-10 AM (1)
Oct 17, 10-11 AM (0)
Oct 17, 11-12 PM (0)
Oct 17, 12-1 PM (0)
Oct 17, 1-2 PM (0)
Oct 17, 2-3 PM (0)
Oct 17, 3-4 PM (0)
Oct 17, 4-5 PM (0)
Oct 17, 5-6 PM (0)
Oct 17, 6-7 PM (0)
Oct 17, 7-8 PM (0)
Oct 17, 8-9 PM (0)
Oct 17, 9-10 PM (0)
Oct 17, 10-11 PM (0)
Oct 17, 11-12 AM (0)
Oct 18, 12-1 AM (0)
Oct 18, 1-2 AM (0)
Oct 18, 2-3 AM (0)
Oct 18, 3-4 AM (0)
Oct 18, 4-5 AM (0)
Oct 18, 5-6 AM (1)
Oct 18, 6-7 AM (0)
Oct 18, 7-8 AM (1)
Oct 18, 8-9 AM (0)
Oct 18, 9-10 AM (6)
Oct 18, 10-11 AM (4)
Oct 18, 11-12 PM (5)
Oct 18, 12-1 PM (3)
Oct 18, 1-2 PM (0)
Oct 18, 2-3 PM (2)
Oct 18, 3-4 PM (0)
Oct 18, 4-5 PM (0)
Oct 18, 5-6 PM (0)
Oct 18, 6-7 PM (2)
Oct 18, 7-8 PM (1)
Oct 18, 8-9 PM (0)
Oct 18, 9-10 PM (2)
Oct 18, 10-11 PM (0)
Oct 18, 11-12 AM (2)
Oct 19, 12-1 AM (0)
Oct 19, 1-2 AM (1)
Oct 19, 2-3 AM (1)
Oct 19, 3-4 AM (0)
Oct 19, 4-5 AM (0)
Oct 19, 5-6 AM (0)
Oct 19, 6-7 AM (0)
Oct 19, 7-8 AM (3)
Oct 19, 8-9 AM (2)
Oct 19, 9-10 AM (3)
Oct 19, 10-11 AM (0)
Oct 19, 11-12 PM (1)
Oct 19, 12-1 PM (2)
Oct 19, 1-2 PM (0)
Oct 19, 2-3 PM (0)
Oct 19, 3-4 PM (0)
Oct 19, 4-5 PM (0)
Oct 19, 5-6 PM (0)
Oct 19, 6-7 PM (1)
Oct 19, 7-8 PM (0)
Oct 19, 8-9 PM (0)
Oct 19, 9-10 PM (0)
Oct 19, 10-11 PM (1)
Oct 19, 11-12 AM (2)
Oct 20, 12-1 AM (0)
Oct 20, 1-2 AM (0)
Oct 20, 2-3 AM (1)
Oct 20, 3-4 AM (0)
Oct 20, 4-5 AM (1)
Oct 20, 5-6 AM (0)
Oct 20, 6-7 AM (22)
Oct 20, 7-8 AM (120)
Oct 20, 8-9 AM (0)
Oct 20, 9-10 AM (0)
Oct 20, 10-11 AM (1)
Oct 20, 11-12 PM (0)
Oct 20, 12-1 PM (0)
Oct 20, 1-2 PM (1)
Oct 20, 2-3 PM (0)
Oct 20, 3-4 PM (1)
Oct 20, 4-5 PM (0)
Oct 20, 5-6 PM (0)
Oct 20, 6-7 PM (0)
Oct 20, 7-8 PM (1)
Oct 20, 8-9 PM (0)
Oct 20, 9-10 PM (0)
Oct 20, 10-11 PM (0)
Oct 20, 11-12 AM (1)
Oct 21, 12-1 AM (0)
Oct 21, 1-2 AM (0)
Oct 21, 2-3 AM (0)
Oct 21, 3-4 AM (0)
Oct 21, 4-5 AM (4)
Oct 21, 5-6 AM (0)
Oct 21, 6-7 AM (1)
Oct 21, 7-8 AM (0)
293 commits this week Oct 14, 2021 - Oct 21, 2021
Added multinode_Sim_Pruning_HardLimit test
- Fix numberOfConnections call to be number of incommingConnections and not countPrunableConnections
- Changed everything to countIncomingConnections
- Applied pruning on:
  - OutboundStateDuplex -> InboundStateDuplex;
  - OutboundStateDuplex^tau -> InboundStateDuplex;
  - OutboundIdleStateDuplex^tau -> InboundStateDuplex;
  - OutboundStateDuplex -> DuplexState
  transitions
- Tweaked DemoteToColdLocal PruneConnections constructor
- Changed prune connections code:
  - for OutboundStateDuplex{^tau} -> InboundStateDuplex and
    OutboundIdleStateDuplex^tau -> InboundStateDuplex transitions, prune
    code is pretty much the same except we have to check for
    (numberOfConns + 1) -- See Summary
  - for OutboundStateDuplex -> DuplexState transition, prune code has to
    check for (numberOfConns + 1) and also forcefully be contained
    inside its toPrune Set -- See Summary
  - for DuplexState -> InboundStateDuplex transition, prune code has to
    take into account if the connection is contained in its toPrune Set.
    If so we shouldn't update the connection to the new state as we
    might go above hardlimit.
- Fix race between acceptLoop and unregisterOutboundConnection
- Fixed bug on unregisterInboundConnectionImpl where UnsupportedState
  was being returned incorrectly.

Summary:

In order for us to never go above hard limit connections we need to make sure that connections that evolve via OutboundDupSt Ticking → InboundIdleSt Duplex  and via OutboundState Duplex -> DuplexState  to use 'numberOfConns + 1' because we want to know if we actually let those connection to evolve if we need to make room for them by pruning.

For OutboundState Duplex -> DuplexState we also need to include it on its own pruneSet, since this connection might be a Sim-open connection and we are above the hardlimit, we really need to prune this connection in order to preserve the hard limit.

Due to the inherent race condition between accept and runConnectionRateLimits in the acceptLoop, we need to, after successfully running accept, check if accepting that connection put us above the hard limit. If it does then we need to cancel the connection.
Added Pruning multinode_Sim test
- Fixed Simulation/Network/Snocket.hs accept function:
  Accept should be careful when finding a connection in Established or
  HalfOpened state, acting accordingly: When in Established state, fail
  the accept call as in the other side, the connect call fell through;
  when in HalfOpened, do not successfully return nor fail, but rather
  just take a new connection from the TBQueue.

  (This should be catched with more thorough Socket tests, see issue #3289)

- multinode_Sim tests refactor