Session Pooler keeps returning 28P01 after database password resets; Supavisor logs show validation secret refresh followed by upstream postgres auth failure #49116
Replies: 3 comments 2 replies
|
This has moved past the usual client-side connection-string mistakes. The useful distinction now is whether the managed I would not use Pause → Resume as the next diagnostic. Supabase documents pausing as a Free-project lifecycle operation, not as a supported Supavisor credential-resync mechanism. It also changes more state than necessary and makes the clean password-rotation timeline harder to reason about. A bounded test sequence would be:
The current connection guide confirms that direct connections are IPv6 on Free projects, Session mode is Shared Pooler There is no supported way to read back or verify a managed role's password. The available checks are an authentication attempt or another rotation, and another rotation now would discard useful evidence. Since your log shows the validation secret being refreshed and then an immediate upstream rejection, I would send Supabase Support the private project ref plus the exact reset and probe timestamps and ask them to compare the managed Also keep all clients stopped while testing. Supabase documents repeated stale-password attempts as capable of extending the Supavisor circuit-breaker window, even though you are not currently seeing that specific error: https://supabase.com/docs/guides/troubleshooting/supavisor-error-circuit-breaker-open-after-password-rotation-0fdb72 So: retain the current password, test both pooler modes once after the propagation window, use a direct IPv6 probe if available, and escalate rather than pausing or rotating again if the controlled tests still fail. |
|
Since you've already ruled out the client-side causes, this narrows to two places the new password can fail to line up, and your Supavisor logs point fairly clearly at one of them:
Two quick tests split the cases: A. Hit the direct connection instead of the pooler. Port 5432, host
B. Rule out the race. If A comes back direct-good / pooler-bad and it persists past the refresh window (i.e. not just a timing race), that's a Supavisor-side cache that isn't self-healing — worth a support ticket quoting those two log lines rather than pause/resume, which (as @akashxmohan0099 said) changes more state than it fixes. Which of A's two outcomes do you get? That's the thing that tells us whether it's your role or their pooler. |
|
I am seeing the same failure pattern on a separate Supabase Free-plan DEV project. Both Supavisor modes fail with the current database password:
We have ruled out the usual client-side causes:
After the latest password rotation, Pooler Logs show:
followed immediately by repeated:
The visible Postgres logs for the same period show normal database activity and no corresponding client authentication error. Direct Postgres comparison is not currently available from this network because the direct endpoint is not reachable from this client environment. I have stopped further password resets and retries. A Supabase Support ticket is already open for this project: Could a Supabase maintainer confirm whether this pattern can indicate a managed Supavisor/upstream credential synchronization issue after password rotation, and whether a managed-side resync/check is required? I do not want to perform another blind password reset, Pause/Resume, or ALTER ROLE operation without confirmation. |
Uh oh!
There was an error while loading. Please reload this page.
I am seeing a persistent Supavisor Session Pooler authentication failure on a managed Supabase Free-plan staging project.
This appears similar to open issue #44210 and the recently closed discussion #48703, but I have additional Supavisor logs and have already ruled out several client/network causes.
Environment
Managed Supabase project, Free plan
Region: ap-northeast-2
Client: Windows, PostgreSQL psql 18
Connection mode: Supavisor Session Pooler
Pooler port: 5432
Database: postgres
Username format: postgres.<PROJECT_REF>
Session Pooler host copied directly from the Dashboard
I am intentionally omitting the complete project ref, password, and connection string from this public post.
Observed problem
Repeated clean psql authentication probes reach the Session Pooler/PostgreSQL path but fail with:
password authentication failed for user "postgres"
The database password has been reset several times from Dashboard → Database Settings. The latest passwords were deliberately simple ASCII alphanumeric strings to eliminate URL-encoding, keyboard-layout, special-character, newline, and clipboard ambiguity.
After the resets I waited before retrying.
Already verified
correct project reference
correct Session Pooler host
correct scoped username postgres.<PROJECT_REF>
port 5432
database postgres
project is Active
no banned IP addresses
no Network Restrictions
TCP connectivity to the Session Pooler succeeds
authentication reaches the server but is rejected
no Supavisor Circuit breaker open condition was detected in the latest controlled probes
the application is not involved; the failure reproduces with psql
Relevant Supavisor logs
Around one of the password-rotation attempts:
SecretChecker not started, using a one-off auth_query connection
ClientHandler: Validation secrets changed, cache updated, deleting upstream auth
immediately followed by:
ClientHandler: Exchange error: password authentication failed for user "postgres"
This is the part that seems unusual to me: Supavisor appears to detect the validation-secret change and invalidate/update its state, but its subsequent upstream authentication as postgres is still rejected.
Direct connection diagnostic
I also tried to determine whether I could bypass Supavisor.
db.<PROJECT_REF>.supabase.co resolves successfully to an IPv6 address, but this Windows host/network has no IPv6 default route:
Get-NetRoute -AddressFamily IPv6 -DestinationPrefix "::/0"
returns no route, and TCP/5432 to the resolved IPv6 address fails.
Therefore I cannot currently perform the direct-Postgres comparison from this network and must use the IPv4 Session Pooler.
Related reports
#44210 — open bug / supavisor issue: password rejected after reset
#48703 — very similar Supavisor validation-secret/upstream-auth log sequence
#47333 — another 28P01-after-password-reset report
Questions
Does the log sequence above indicate a possible desynchronization between the managed postgres role password, project validation secrets, and Supavisor's upstream authentication state?
Is there a supported self-service way to force Supavisor to reload/resynchronize the upstream credential?
Some community replies suggest restarting the project or Pause → Resume. Is that currently a recommended/supported action for this condition on a managed Free project?
If Pause → Resume is appropriate, should the database password be reset again after the project resumes, or should the current password be retained?
Is testing the Transaction Pooler on port 6543 useful for distinguishing a Session-mode problem from a tenant-wide Supavisor credential problem, or would both modes be expected to use the same affected upstream credential state?
Is there any supported diagnostic that can verify the managed postgres role credential state without exposing or rotating the password again?
I have stopped further password resets and connection retries until I understand the correct recovery procedure.
I can provide the complete project ref privately to a Supabase maintainer if needed.
All reactions