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
When the channel is full, consider waiting rather than discarding the message.
Totally, I agree with you.
I'm not sure, do you mean to change all asynchronous reactor behavior? Remove the default clause?
mempool/reactor
evidence/reactor
blockchain/v[0,1]/reactor
consensus/reactor
statesync/reactor
p2p/pex/pex_reactor
If we allow blocking in receiving messages, there is no problem. But the behavior becomes synchronously reactors. If a node receives too many transactions and blocking the transactions, then the node also cannot work to do consensus/statesync/etc. We should improve behavior to take into consideration synchronously each reactor's behavior. Or do we simply allow becoming synchronously reactors?
I think it's meaningful because it works synchronously only when the channel is full, and before that, it works async. It would be better to act the same for all reactors.
Summary
https://github.com/line/ostracon/blob/dbe53cb7537246681e2d87de51000c02ece2c49a/p2p/peer.go#L408
When the channel of the reactor is full due to the above code, messages are discarded. In the case of a mempool reactor, if a message is discarded, there may be a problem that tx remains in the sender's mempool. When the channel is full, consider waiting rather than discarding the message.
Problem Definition
Proposal
For Admin Use
The text was updated successfully, but these errors were encountered: