Skip to content

Self-hosted cluster removal: retry a logout that failed, or one skipped because the cluster couldn't be read #1967

Open

Description

@dawsontoth

What happens

After #1966, removing a self-hosted cluster from Studio sends one best-effort logout to its server and forgets the remembered sign-ins for the cluster and its instances. "Best effort" was the call on #1954: one attempt, a short timeout, and the removal never waits on it. That leaves two cases where the server-side session outlives the removal:

  1. The logout fails or times out. Studio has already forgotten the sign-in, so nothing retries it, not even a later app sign-out. A server that's unreachable when you remove it keeps that session until it expires.
  2. Studio can't read the cluster record at removal. Both reads, alongside and after the DELETE, failed. Studio can't tell whether the cluster was self-hosted, so it sends no logout. The forgetting happens on the next visit to one of the cluster's pages, as fix(cluster): send a terminated cluster's in-cluster bookmarks to its overview #1954 does for Fabric clusters.

Both are accepted costs of the best-effort design, recorded in src/features/cluster/DESIGN.md. Neither touches another cluster's credentials.

Possible improvement

Keep a small "logout owed" marker after a failed logout, holding no credential, so the next app sign-out retries it once. For case 2, retry the cluster read once later. Either way the stored credential has to stay until the retry, which is the trade-off the best-effort call avoided.

Review-Deferral: 360de88dc2418237 severity=minor category=security
Review-Deferral: 85883ef1b2f4b7a1 severity=nit category=reliability

Raised by the cross-model review of #1966 (#1931).

🤖 Generated by Anthropic Claude Code (Claude Opus 5.5); posted via @dawsontoth.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    P3

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions