Release hotfixes - #4042
Conversation
More resilient workbench boot, and fix cluster switcher bug
Soffi AI SummaryThis PR delivers two targeted hotfixes: a resilience improvement to the AI workbench boot sequence, and a fix for a cluster-switcher bug in the Kubernetes dashboard UI. Kubernetes Cluster Switcher Fix (Frontend) AI Workbench Boot Resilience (Elixir) Commits
Updated: 2026-08-23 05:16 UTC |
|
plural deploy this |
|
Deployment GitOps PR: https://github.com/pluralsh/plrl-up-demos/pull/2692 |
Greptile SummaryThis hotfix preserves Kubernetes dashboard state during cluster changes, improves cluster-ID replacement and selection behavior, and tolerates already-running workbench processes.
Confidence Score: 3/5The PR should not merge until stale cluster identity during switching and conflicting MCP client supervision during duplicate startup are fixed. Cluster switches can issue resource requests against the previous cluster, and duplicate workbench supervisors can claim the same MCP client without a valid shared ownership lifecycle. Files Needing Attention: assets/src/components/kubernetes/Cluster.tsx; lib/console/ai/workbench/supervisor.ex
|
| Filename | Overview |
|---|---|
| assets/src/components/kubernetes/Cluster.tsx | Preserves previous query data during cluster switches but can expose the old cluster through context after the route has switched. |
| assets/src/components/kubernetes/clusterSelection.ts | Adds focused helpers for merging the current cluster, selecting defaults, and detecting settled missing-cluster results. |
| assets/src/components/kubernetes/Navigation.tsx | Replaces only the Kubernetes cluster path segment and avoids redundant navigation. |
| assets/src/components/cd/utils/ClusterSelector.tsx | Ensures the individually fetched current cluster remains selectable when absent from the loaded connection page. |
| lib/console/ai/workbench/supervisor.ex | Treats an existing MCP client as a newly supervised child, creating conflicting ownership during duplicate workbench startup. |
| lib/console/ai/workbench/heartbeat.ex | Makes heartbeat startup idempotent by returning the existing registered process. |
| lib/console/ai/workbench/engine.ex | Avoids marking jobs failed when startup collides with an already-running workbench process. |
Reviews (1): Last reviewed commit: "Release hotfixes" | Re-trigger Greptile
| def start_client(opts) do | ||
| case Anubis.Client.start_link(opts) do | ||
| {:ok, pid} -> {:ok, pid} | ||
| {:error, {:already_started, pid}} -> {:ok, pid} |
There was a problem hiding this comment.
Conflicting MCP client supervision
If duplicate workbench starts overlap, this branch reports the existing named MCP client as a successfully started child of the new supervisor even though it remains owned by the original lifecycle. Terminating or restarting either supervisor can then remove the shared client without the remaining supervisor observing and restarting it, leaving MCP tools unavailable.
Knowledge Base Used: Console AI workbenches
There was a problem hiding this comment.
It's keyed by job so, that's incredibly unlikely
There was a problem hiding this comment.
That's a fair point — since the client name is derived from both the tool and the job ID, collisions across different workbench instances are effectively impossible. The :already_started case here guards against a transient re-init of the same job's supervisor (e.g. a crash/restart race), not true cross-job sharing. I'll withdraw the concern.
| const clusterForContext = | ||
| cluster ?? (loading ? queryData?.cluster : undefined) |
There was a problem hiding this comment.
Stale cluster context during switching
When the selected cluster is absent from the previous bounded cluster page and its new query is still loading, this fallback exposes the previous cluster through ClusterContext even though the route already identifies the new cluster. Context consumers then issue resource requests and actions against the old cluster while displaying the new cluster's URL.
Knowledge Base Used:
|
plural deploy this |
|
GitOps deployment PR created: https://github.com/pluralsh/plrl-up-demos/pull/2693 — it pins console to sha-1f30ed3 and is associated with Plural Service: mgmt/apps. |
More resilient workbench boot, and fix cluster switcher bug
Test Plan
Test environment: https://console.your-env.onplural.sh/
Checklist
Plural Flow: console