Skip to content

console: fix cancel subscribe button for the emulator#36679

Open
leedqin wants to merge 1 commit into
MaterializeInc:mainfrom
leedqin:fix-emulator-subscribe
Open

console: fix cancel subscribe button for the emulator#36679
leedqin wants to merge 1 commit into
MaterializeInc:mainfrom
leedqin:fix-emulator-subscribe

Conversation

@leedqin
Copy link
Copy Markdown
Contributor

@leedqin leedqin commented May 21, 2026

  • Fixed a bug where clicking Cancel on a running SUBSCRIBE in the SQL Shell did nothing in self-managed deployments with authMode None (e.g. the emulator). The Shell's websocket authenticated as materialize via WebSocketAuth::Basic, but the HTTP path used to fire pg_cancel_backend() was bare globalFetch with no auth header, so environmentd resolved it as anonymous_http_user and rejected the cancel with 42501 — anonymous_http_user isn't a member of materialize, which pg_cancel_backend's role-membership check requires.

  • Added a #flexibleDeploymentAuthMiddleware on SelfManagedApiClient that attaches Authorization: Basic materialize: on HTTP fetches in authMode None, mirroring the websocket auth already set up in getWsAuthConfig(). HTTP and websocket now resolve to the same role, so cancel works and any future role-sensitive HTTP operation (DROP, ALTER, ownership checks) won't hit the same asymmetry.

Remove these sections if your commit already has a good description!

Motivation

Fixes CNS-64

Verification

cancel_subscribe.mov

- Fixed a bug where clicking Cancel on a running SUBSCRIBE in the SQL Shell did nothing in self-managed deployments with authMode None (e.g. the emulator). The Shell's websocket authenticated as `materialize` via WebSocketAuth::Basic, but the HTTP path used to fire pg_cancel_backend() was bare globalFetch with no auth header, so environmentd resolved it as anonymous_http_user and rejected the cancel with 42501 — anonymous_http_user isn't a member of `materialize`, which pg_cancel_backend's role-membership check requires.
- Added a #flexibleDeploymentAuthMiddleware on SelfManagedApiClient that attaches Authorization: Basic <materialize:> on HTTP fetches in authMode None, mirroring the websocket auth already set up in getWsAuthConfig(). HTTP and websocket now resolve to the same role, so cancel works and any future role-sensitive HTTP operation (DROP, ALTER, ownership checks) won't hit the same asymmetry.
@leedqin leedqin requested a review from a team as a code owner May 21, 2026 20:45
@leedqin leedqin requested review from Alphadelta14 and removed request for a team May 21, 2026 20:45
@leedqin leedqin changed the title Shell cancel auth fix: console: fix cancel subscribe button for the emulator May 21, 2026
@leedqin leedqin added the A-CONSOLE Area: Console label May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CONSOLE Area: Console

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant