-
Notifications
You must be signed in to change notification settings - Fork 4
feat(ocap-kernel): Support multiple subclusters #530
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
base: main
Are you sure you want to change the base?
Conversation
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.
Design LGTM. I summarize the key decisions below.
- enforced one-to-many subcluster-to-vat relation
- reloadSubcluster reloads all of the configured vats, even if they were terminated
- special rogue vat status for vats not in subclusters
Code looks good overall. I make some small recommendations.
@grypez I just want to point out that in the Kernel we have two distinct operations for handling vats/subclusters: |
59eabea
to
af76f27
Compare
If I'm following this correctly (caveat: not entirely sure I am) I don't see the purpose at all in supporting a vat not in a subcluster. A lone vat is just a subcluster with a single vat in it, which I always expected to be an entirely normal thing. As I suggested above, the main reason for introducing the subcluster abstraction was to allow a vat's configuration to be coordinated with the configurations of other vats (e.g., because they are to be born in some kind of cooperative relationship with each other). Basically, it's a another layer of nested braces in the config file. Being able to do things like terminate a subcluster seems like a really useful leveraging of that concept (i.e., these things are together, so it's nice to provide a safe and convenient affordance for doing something to all of them collectively instead of having to futz with them individually), but it's not fundamental. |
That makes sense, and explains why |
I support single vat subclusters pulling their own bootstraps. This is already possible. |
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.
LGTM
You're absolutely right, treating a lone vat as simply a subcluster with one vat makes a lot of sense, and I agree it would simplify the model overall. What you're suggesting would mean removing support for launching vats outside of a subcluster entirely (i.e., removing kernel.launchVat), which I think is the right direction long-term. That said, since my current task was scoped specifically to adding support for multiple subclusters, I’ve kept the existing behavior for now to avoid widening the scope too much, especially given that a lot of our integration tests in To make sure we follow up on this properly, I’ve created a new task to migrate the kernel to fully enforce subcluster-based vat launching. I'll pick that up next. |
c497573
to
bca937f
Compare
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.
LGTM!
Closes #391 #401
Currently the kernel only supports a single subcluster at a time.
With this PR we enable users to create, retrieve, update and delete multiple subclusters, each with their own configuration. Also updated the control panel to support viewing and managing these subclusters through the interface.
Screen.Recording.2025-06-04.at.12.34.47.mov