-
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
Replace the ThreadRegistry with the ResourceRegistry #914
Conversation
The `ResourceRegistry` is more general than the `ThreadRegistry` and will replace it.
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.
Looks good, though the concept of subregistry needs refinement. Discussed this at length with @mrBliss , will push some changes, including an assertion that may (or may not) help track down where the test failure is coming from.
LT -> throwM $ OnSlotTooLate slot now | ||
EQ -> m | ||
GT -> onLaterSlot btime slot m | ||
-- Throws 'OnSlotTooLate' if the slot is already passed. This is primarily |
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 the specified slot is already reached when calling onSlot
.
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.
Amazing work.
startingSlot <- atomically getCurrentSlot | ||
when (startingSlot >= slot) $ | ||
throwM $ OnSlotTooLate slot startingSlot | ||
runWhenJust registry waitForSlot $ \registry'' () -> |
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.
Unnecessary double prime.
bors r+ |
914: Replace the ThreadRegistry with the ResourceRegistry r=mrBliss a=mrBliss Threads (and sub-`ThreadRegistry`s) are also resources, so we can use the `ResourceRegistry` to allocate/release them, instead of having two separate `-Registry`s. TODO: consensus tests are failing with: ``` Exception: ResourceRegistry used after closing CallStack (from HasCallStack): error, called at src/Ouroboros/Consensus/Util/ResourceRegistry.hs:104:31 in ouroboros-consensus-0.1.0.0-6HDMr0z0KdXIwfzJlxCxiL:Ouroboros.Consensus.Util.ResourceRegistry ``` 916: fixup Real PBFT setup r=mrBliss a=nfrisby The `RealPBFT` setup was creating nodes with different `CoreNodeId`s than expected. This was causing property failures during my work-in-progress on Issue #231 PR #773. Is it safe to export `plcCoreNodeId`, even just for testing? I'm weary of adding exports to code I'm not familiar with. 918: Eq and Ord instances for Async m a r=dcoutts a=coot Using 'QuantifiedConstraints' extension in 'MonadAsync'. Also provide instances for 'Async (SimM s) a'. Co-authored-by: Thomas Winant <[email protected]> Co-authored-by: Edsko de Vries <[email protected]> Co-authored-by: Nicolas Frisby <[email protected]> Co-authored-by: Marcin Szamotulski <[email protected]>
914: Replace the ThreadRegistry with the ResourceRegistry r=mrBliss a=mrBliss Threads (and sub-`ThreadRegistry`s) are also resources, so we can use the `ResourceRegistry` to allocate/release them, instead of having two separate `-Registry`s. TODO: consensus tests are failing with: ``` Exception: ResourceRegistry used after closing CallStack (from HasCallStack): error, called at src/Ouroboros/Consensus/Util/ResourceRegistry.hs:104:31 in ouroboros-consensus-0.1.0.0-6HDMr0z0KdXIwfzJlxCxiL:Ouroboros.Consensus.Util.ResourceRegistry ``` 916: fixup Real PBFT setup r=mrBliss a=nfrisby The `RealPBFT` setup was creating nodes with different `CoreNodeId`s than expected. This was causing property failures during my work-in-progress on Issue #231 PR #773. Is it safe to export `plcCoreNodeId`, even just for testing? I'm weary of adding exports to code I'm not familiar with. 918: Eq and Ord instances for Async m a r=dcoutts a=coot Using 'QuantifiedConstraints' extension in 'MonadAsync'. Also provide instances for 'Async (SimM s) a'. Co-authored-by: Thomas Winant <[email protected]> Co-authored-by: Edsko de Vries <[email protected]> Co-authored-by: Nicolas Frisby <[email protected]> Co-authored-by: Marcin Szamotulski <[email protected]>
Threads (and sub-
ThreadRegistry
s) are also resources, so we can use theResourceRegistry
to allocate/release them, instead of having two separate-Registry
s.TODO: consensus tests are failing with: