-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make monitorPeerConnection non-blocking #4067
Conversation
6c535f1
to
cf6f9dd
Compare
cf6f9dd
to
c733e87
Compare
Includes the IntersectMBO/ouroboros-network#4067 fix.
Includes the IntersectMBO/ouroboros-network#4067 fix.
-- | Monitor peer state. Must be non-blocking. | ||
-- | ||
monitorPeerConnection :: peerconn -> STM m (PeerStatus, ReconnectDelay), | ||
monitorPeerConnection :: peerconn -> STM m (PeerStatus, Maybe ReconnectDelay), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it must be non-blocking could we somehow get rid of STM
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no because the Guarded
monoid is executed in STM
monad.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right, I had edited this comment don't know why it didn't get through. But I think this comment is misleading, we want monitorPeerConnection
to be non-blocking in a particular function's logic. Saying this at the top level and then have a STM
type is bit confusing. I'd be more accurate and explain in what situation we do not want to block
-> STM m (Map MiniProtocolNum (Maybe (HasReturned a))) | ||
-- do not block when a mini-protocol is still running | ||
f = traverse (((\stm -> (Just <$> stm) `orElse` pure Nothing))) | ||
<=< readTVar . ahMiniProtocolResults |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe this is the culprit? Maybe explain here with more detail why we do not want this to block.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There's no need to wake up the outbound-governor multiple times when the mini-protocols are terminating. Added comments.
`ReconnectDelay` ought to use `max` as its semigroup rather than `+`.
This allows to use fractional literals without wrapping them in `ReconnectDelay` constructor.
Instead of relaying on `policyErrorDelay` we can relay on the reconnect delay computed by `monitorPeerConnection`.
c733e87
to
332c303
Compare
This will cause the `peerSelectionGovernor` to fail and will stop the diffusion layer. This is better than silently skipping update of the state due to an asynchronous demotion.
ouroboros-network/src/Ouroboros/Network/PeerSelection/PeerStateActions.hs
Show resolved
Hide resolved
bors merge |
Includes the IntersectMBO/ouroboros-network#4067 fix.
4120: Cherry picked network changes for cardano-node-1.35.5 release r=coot a=coot This cherry-picked patches from the following PRs: * #3794 * #3844 * #3785 * #3904 * #3915 * #3852 * #3970 * #3979 * #4015 * #4067 * #4004 * #4086 * #4113 * #4106 * #4127 * #4103 Also cherry-picked almost all the commits which modify GitHub actions: * 18c5244 Run GitHub Actions on pull requests * 3adf5a9 Use newer version of io-sim * ee9b7a6 Fix GH Actions Windows CI: switch from pkgconf to pkg-config * e6cf074 github-actions: use `ubuntu-latest` * 9a8b959 Updated versions of github actions * fc8f8f0 Fix GH Actions Windows CI caching * 7f07c40 Windows Github Actions now use MSYS2 * b21a7ce Fix chocolatey CI error * #4134 TODO: * [x] bump versions of packages * [x] input-output-hk/cardano-haskell-packages#84 Co-authored-by: Mark Tullsen <[email protected]> Co-authored-by: Marcin Szamotulski <[email protected]>
Description
Fixes #4064
TODO:
improve network simulation test so it catches the problem(it will be done in another PR)Checklist
interface-CHANGELOG.md
interface-CHANGELOG.md