-
Notifications
You must be signed in to change notification settings - Fork 214
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
Remove public get_node_state()
API
#3552
Merged
eddyashton
merged 25 commits into
microsoft:main
from
eddyashton:shatter_node_interface
Feb 22, 2022
Merged
Remove public get_node_state()
API
#3552
eddyashton
merged 25 commits into
microsoft:main
from
eddyashton:shatter_node_interface
Feb 22, 2022
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
eddyashton
commented
Feb 15, 2022
eddyashton
commented
Feb 15, 2022
eddyashton
commented
Feb 15, 2022
shatter_node_interface@42297 aka 20220222.19 vs main ewma over 20 builds from 41943 to 42293 Click to see tablemain
shatter_node_interface
|
achamayou
approved these changes
Feb 21, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Explanation from #2428:
What this means in practice is that instead of giving a
ccf::AbstractNodeState&
to all frontends (including methods that apps definitely shouldn't be calling!), we pass some smaller, more-focussed interfaces to the node and gov frontends to do the things they need. This involves some extremely hard naming, suggestions welcome.The actual implementation of these new interfaces is currently, for minimal impact, just redirecting to the existing
NodeState
monolith, but hopefully the separation of interfaces is an entry point to how this could be split up.Opening as a draft for now, because I'd like to take a run at the last part of that: rather than a mix of access/ownership patterns, and increasingly messy constructors for the node and gov frontends, we could replace (without breaking changes!) the existing
AbstractNodeContext
with a more generic container/access point for subsystems, some private and some public. This isn't a necessary part of this change, but very related - if it's small enough to be glued on the end, I'll include it in this PR.EDIT - This last bit is now done. It may be standalone readable in this commit: b4aaba9. This approach has major benefits in decoupling these subsystems, and making it trivial to make them public/private as required. For instance, it lets us also make the entire
LFSAccess
subsystem private. It is used by apps, if they use the Bucketed indexing strategy, but we don't really want to give them direct access. Since the fact it's used is entirely private (in the private implementation of that strategy), we can make the entire subsystem (even its abstract interface type) private and unavailable to apps.