Repository navigation
Conversation
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
This branch has not been deployed
This file contains hidden or 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
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.
Summary
Prototype
[openshell.gateway] supervisor_topology = "gateway"to run one shared two-replica supervisor Deployment for the Kubernetes gateway installation. A PostgreSQL-backed lease elects one gateway process to place sandboxes, recover failed owners, and drive explicit drain/rebalance operations. Both supervisor replicas host sessions, and every gateway serves supervisor heartbeats, grants, activation, and owner lease renewal.Failed-owner recovery and planned movement fence the previous supervisor and resume the same agent process and workload generation, preserving memory. Healthy assignments stay where they are unless an operator requests movement. Dedicated supervision remains the default. This draft is a runnable feasibility prototype for estimating the production implementation.
Core surfaces
supervisor_topology = "gateway"is the only topology switch. The Kubernetes driver maintains an installation-wide supervisor pool and preserves it when individual sandboxes are deleted. Requires the in-process Kubernetes driver, shared workspace mode, and gateway JWT authentication.Store::write_fencedvalidates holder, term, and expiry in the same transaction as assignment CAS, operation updates, and gateway-token rotation. PostgreSQL locks the lease row before sampling database time; SQLite provides equivalent transaction semantics. Followers do not reconcile assignments.GetSupervisorPoolStatus,StartSupervisorPoolOperation, andCancelSupervisorPoolOperationrequire bearer authentication andplatform_adminwith the appropriate config scope. Drain targets a member; rebalance targets the pool;max_paralleldefaults to one and is bounded to 1–8. Cancelling a completed drain returns the member to service. No CLI command yet.RELINQUISHreleases ownership without stopping the workload;RELEASEretains stop/delete behavior. Planned moves use the existing signed recovery grant, runtime fence, receipt, and activation protocol.supervisor-recovery.v1preserves the process and checkpointed executable-identity pins. Stop/delete wins. Pool retries are bounded; single-use grant and activation calls are not automatically retried after a lost response.Existing network, SSH, exec, and forwarding connections break during a handoff and are not replayed. Missing the runtime recovery deadline stops the workload and reports
SupervisorRecoveryFailed.Validation
mise run e2e:kubernetes:supervisor-topologypassed twice on the isolatedgsp-proto-ae7fcluster, including CLI conformance. The final successful run used rebuilt supervisor/sandbox images with the bounded RecoveryHello retry and completed the topology test in 192 seconds.Previously recorded dedicated Kubernetes regression: 96/97 passed, three skips, one failure in
canonical_main_connect_recovers_its_ssh_transport. The same failure reproduced on the unmodified base61d42102cin the same environment. This follow-up does not claim a new dedicated-lane run.Remaining production work
Closes #4428 (prototype scope). Refs #4311 and RFC draft #4377.
Checklist