You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Per discussions on IRC with @owainga and @drahn, the current blockmanager/peer design is such that a slow peer can cause slowness amongst the overall system. The proposed solution is to split the current outHandler goroutine into 2. One, to be named, queueHandler where most of the current outHandler logic moves into it, and a new outHandler. The queueHandler will act as the 'traffic cop' between block manager queuing items to be sent and the new outHandler which actually sends the item to the socket and notifies the queueHandler when it has been written so it can provide the next item to be written. This will allow all queuing to happen quickly, and independent of the peer's speed, so block manager is not bogged down by slow peers.
In conjunction with this, a mechanism is needed to prevent the queue from growing too large on slow peers by either signalling the block manager to stop sending new stuff until the peer catches up, or worst case, disconnecting the peer.
The text was updated successfully, but these errors were encountered:
Per discussions on IRC with @owainga and @drahn, the current blockmanager/peer design is such that a slow peer can cause slowness amongst the overall system. The proposed solution is to split the current outHandler goroutine into 2. One, to be named,
queueHandler
where most of the currentoutHandler
logic moves into it, and a newoutHandler
. ThequeueHandler
will act as the 'traffic cop' between block manager queuing items to be sent and the newoutHandler
which actually sends the item to the socket and notifies thequeueHandler
when it has been written so it can provide the next item to be written. This will allow all queuing to happen quickly, and independent of the peer's speed, so block manager is not bogged down by slow peers.In conjunction with this, a mechanism is needed to prevent the queue from growing too large on slow peers by either signalling the block manager to stop sending new stuff until the peer catches up, or worst case, disconnecting the peer.
The text was updated successfully, but these errors were encountered: