Skip to content
Realtime

Operational Error Codes

List of operational codes to help understand your deployment and usage.

Error codeDescriptionAction
ChannelRateLimitReached

The number of channels you can create has reached its limit.

ChannelShutdown

The channel was shut down and an error system message was pushed to the client.

CheckOidsError

Error when fetching the publication tables (OIDs) during the periodic check; the existing OIDs, replication slot and subscribers are left untouched.

ClientJoinRateLimitReached

The rate of joins per second from your clients has reached the channel limits.

ClientPresenceRateLimitReached

A single client sent Presence updates too frequently and had its channel closed. This usually means Presence is being used for high-frequency updates it is not designed for.

Learn more:

Reserve Presence for slow-changing state and use Broadcast for high-frequency updates such as live cursors, or throttle your track() calls.

ConnectionRateLimitReached

The number of connected clients has reached its limit.

DatabaseConnectionRateLimitReached

The rate of attempts to connect to the database has reached the limit.

DatabaseLackOfConnections

Realtime was not able to connect to the tenant's database due to not having enough available connections.

Learn more:

Verify your database connection limits.

DropReplicationSlotFailed

Error when dropping the replication slot after the publication became empty; the poller stops so the temporary slot is released with the connection.

ErrorConnectingToWebsocket

Error when trying to connect to the WebSocket server.

Verify user information on connect.

ErrorExecutingTransaction

Error executing a database transaction in tenant database.

ErrorOnRpcCall

Error when calling another realtime node.

ErrorRunningQuery

Error when running a query against the tenant database.

ErrorStartingPostgresCDC

Error when starting the Postgres CDC extension which is used for Postgres Changes.

HttpClientError

Phoenix converted an exception into a 4xx HTTP response (for example a request to an unknown route). The log includes the underlying error and status.

HttpServerError

Phoenix converted an unhandled exception into a 5xx HTTP response. The log includes the underlying error and status to explain a server error that request metrics alone would not surface.

IncreaseConnectionPool

The number of connections you have set for Realtime are not enough to handle your current use case.

IncreaseSubscriptionConnectionPool

The subscription connection pool hit too many database timeouts and should be increased.

InitializingProjectConnection

Connection against Tenant database is still starting.

InvalidJoinPayload

The payload provided to Realtime on connect is invalid.

InvalidJWTToken

The JWT provided on connect is expired or is missing required claims (`role` and `exp`).

InvalidPresencePayload

Payload from track event sent to Presence isn't a map.

JanitorFailedToDeleteOldMessages

Scheduled task for realtime.message cleanup was unable to run.

JoinsRateLimitReached

The rate of joins per second from your clients has reached the limit and the connection was refused.

JwtSignatureError

JWT signature was not able to be validated.

JwtSignerError

Failed to generate a JWT signer — check your JWT secret or JWKS configuration.

MalformedJWT

Token received does not comply with the JWT format.

MalformedWebSocketMessage

Received a WebSocket message that is empty, invalid JSON, or missing required fields (`ref`, `topic`, or `event`). The connection is kept alive but the message is dropped.

MessagePerSecondRateLimitReached

The rate of messages per second from your clients has reached the channel limits.

MigrationCountMismatch

The cached `migrations_ran` count did not match the tenant database and is being reconciled.

MigrationCountMismatchReconcileFailed

Failed to reconcile the `migrations_ran` count mismatch between the cache and the tenant database.

MigrationsFailedToRun

Error when running the migrations against the Tenant database that are required by Realtime.

MissingAPIKey

No API key was provided in the `x-api-key` header or `apikey` query parameter.

MissingPartition

Realtime was unable to find the expected messages partition.

PartitionCreationFailed

Error when creating partitions for realtime.messages.

PoolingReplicationError

Error when pooling the replication slot.

PoolingReplicationPreparationError

Error when preparing the replication slot.

PresenceRateLimitReached

Limit of presence events reached globally.

PrivateOnly

The connection was rejected because this project only allows private channels.

QueryCanceled

A database query was canceled, usually due to a statement timeout.

RealtimeDisabledForConfiguration

The configuration provided to Realtime on connect will not be able to provide you any Postgres Changes.

Verify your configuration on channel startup as you might not have your tables properly registered.

RealtimeDisabledForTenant

Realtime has been disabled for the tenant.

Learn more:

Your project may have been suspended for exceeding usage quotas. Contact support with your project reference ID and a description of your Realtime use case.

RealtimeNodeDisconnected

Realtime is a distributed application and this means that one the system is unable to communicate with one of the distributed nodes.

RealtimeRestarting

Realtime is currently restarting.

ReconnectSubscribeToPostgres

Postgres changes still waiting to be subscribed.

ReplicationConnectionDown

The replication connection was terminated and a recovery window has been opened.

ReplicationConnectionRecoveryFailed

The database check failed while trying to recover the replication connection.

ReplicationConnectionTimeout

Replication connection timed out during initialization.

ReplicationMaxWalSendersReached

Maximum number of WAL senders reached in tenant database.

Learn more:

ReplicationPollerConnectionFailed

Error when the replication poller process fails to connect to the database on startup.

ReplicationPollerMaxRetriesReached

The replication poller gave up after the maximum number of consecutive retries and stopped the tenant's Postgres Changes workers.

ReplicationRecoveryWindowExceeded

The replication connection recovery window was exceeded and the connection was terminated.

ReplicationSlotBeingUsed

The replication slot is being used by another transaction.

ReplicationSlotLagCheckSkipped

The periodic replication slot lag check could not be completed, typically because the tenant database connection was unavailable. The check is skipped and retried on the next watchdog interval.

ReplicationSlotLagTooHigh

The replication slot WAL lag has exceeded 50% of `max_slot_wal_keep_size`. The replication connection is shut down and will be restarted to prevent the slot from being invalidated by PostgreSQL.

RlsPolicyError

Error on RLS policy used for authorization.

RpcError

Error returned when calling another realtime node over RPC.

StartReplicationFailed

Error when starting the replication and listening of errors for database broadcasting.

SubscriptionCleanupFailed

Error when trying to clean up all subscriptions on subscription manager initialization or OID change.

SubscriptionDeletionFailed

Error when trying to delete a subscription for postgres changes.

SubscriptionManagerConnectionFailed

Error when the subscription manager process fails to connect to the database on startup.

SynInitializationError

Our framework to syncronize processes has failed to properly startup a connection to the database.

TenantNotFound

The tenant you are trying to connect to does not exist.

Verify the tenant name you are trying to connect to exists in the realtime.tenants table.

TimeoutOnRpcCall

RPC request within the Realtime server has timed out.

TopicNameRequired

You are trying to use Realtime without a topic name set.

UnableCheckoutConnection

Error when trying to checkout a connection from the tenant pool.

UnableToBroadcastChanges

Error when trying to broadcast database changes (realtime.messages) to subscribers.

UnableToCheckProcessesOnRemoteNode

Error when trying to check the processes on a remote node.

UnableToConnectToProject

Unable to connect to Project database.

UnableToConnectToTenantDatabase

Realtime was not able to connect to the tenant's database.

UnableToDeleteTenant

Error when trying to delete a tenant.

UnableToEncodeJson

An error were we are not handling correctly the response to be sent to the end user.

UnableToHandleBroadcast

Error when handling a broadcast message.

UnableToHandlePresence

Error when handling a presence message on a channel.

UnableToReplayMessages

An error while replaying messages.

UnableToSetPolicies

Error when setting up Authorization Policies.

UnableToSubscribeToPostgres

Error when trying to subscribe to Postgres changes.

UnableToTrackPresence

Error when handling track presence for this socket.

Unauthorized

Unauthorized access to Realtime channel.

UnexpectedMessageReceived

An unexpected message was received by the replication connection process.

UnhandledProcessMessage

Unhandled message received by a Realtime process.

UnknownError

An unhandled error occurred.

UnknownErrorOnChannel

An error we are not handling correctly was triggered on a channel.

UnknownErrorOnController

An error we are not handling correctly was triggered on a controller.

UnknownErrorOnWebSocketMessage

An unexpected error occurred while processing an incoming WebSocket message. The connection is kept alive but the message is dropped.

UnknownPresenceEvent

Presence event type not recognized by service.

UnprocessableEntity

Received a HTTP request with a body that was not able to be processed by the endpoint.

WarnSendingBroadcastMessage

Warning when `realtime.send` or `realtime.send_binary` cannot insert the message.

Learn more: