Skip to content
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

Merged
merged 5 commits into from
Aug 13, 2019

Conversation

mrBliss
Copy link
Contributor

@mrBliss mrBliss commented Aug 12, 2019

Threads (and sub-ThreadRegistrys) are also resources, so we can use the ResourceRegistry to allocate/release them, instead of having two separate -Registrys.

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

@mrBliss mrBliss added consensus issues related to ouroboros-consensus cardano-node Issues related to `cardano-node` repository byron-proxy Change will require to be propagated to `cardano-byron-proxy` labels Aug 12, 2019
@mrBliss mrBliss added this to the Consensus_TechnicalDebt milestone Aug 12, 2019
@mrBliss mrBliss requested a review from edsko August 12, 2019 07:55
@edsko edsko self-assigned this Aug 12, 2019
Copy link
Contributor

@edsko edsko left a 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
Copy link
Contributor

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.

Copy link
Contributor

@edsko edsko left a 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'' () ->
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unnecessary double prime.

@edsko edsko marked this pull request as ready for review August 13, 2019 11:19
@mrBliss
Copy link
Contributor Author

mrBliss commented Aug 13, 2019

bors r+

iohk-bors bot added a commit that referenced this pull request Aug 13, 2019
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]>
@iohk-bors
Copy link
Contributor

iohk-bors bot commented Aug 13, 2019

@iohk-bors iohk-bors bot merged commit 913e57d into master Aug 13, 2019
@iohk-bors iohk-bors bot deleted the mrBliss/thread-registry-resource-registry branch August 13, 2019 12:57
@mrBliss mrBliss removed this from the Consensus_TechnicalDebt milestone Nov 7, 2019
coot added a commit that referenced this pull request May 16, 2022
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
byron-proxy Change will require to be propagated to `cardano-byron-proxy` cardano-node Issues related to `cardano-node` repository consensus issues related to ouroboros-consensus technical debt
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants