# 53400 — configuration_limit_exceeded

> Source-backed reference for PostgreSQL SQLSTATE 53400.
---

# 53400

## At a glance {#at-a-glance}
`53400` reports that a configured or finite process slot is exhausted. Fixed paths cover background workers, logical-replication workers, and replication-origin state slots.

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| Field | Value |
| --- | --- |
| SQLSTATE | `53400` |
| Condition | `configuration_limit_exceeded` |
| Status | `active` |
| Known present by | `9.2.0` |
| Locked snapshots | `9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3` |
| Macros | `ERRCODE_CONFIGURATION_LIMIT_EXCEEDED` |
| Aliases | `—` |

<!-- source facts: data/errcodes/53400.json -->
<!-- END SQLSTATE FACTS -->

## Meaning {#meaning}
The source distinguishes `too many background workers`, no slot for a new autovacuum/background worker, no logical-replication worker slots, and replication-origin state limits. Hints name the parameter where the path can identify one; the current setting and workload determine whether increasing it is safe.

## Diagnosis {#diagnosis}
Keep the exact component and parameter from the message. Inspect worker counts, active replication, origin IDs, slots, and server logs; distinguish a worker-slot limit (`53400`) from a generic resource failure (`53000`) or a statement complexity limit (`54001`).

## Response {#response}
Remove or finish work that legitimately holds the slot, or raise the named configuration after checking process and memory capacity. Apply the change through the normal configuration/restart or reload procedure, then verify that the requested component can start. These fixed worker, launcher, and replication-origin paths can run in background backend processes rather than a client transaction; where an `ERROR` reaches an explicit client transaction, use `ROLLBACK` or `ROLLBACK TO SAVEPOINT` before retrying, and in autocommit retry only after the slot cause is corrected. Do not create workers merely to force this condition.

## Versions {#versions}
The locked catalogue records this condition from 9.2.0; cited background-worker and logical-replication paths are PostgreSQL 18.6 source. No slot exhaustion was run.

## Related {#related}
[`53000`](../53000/), [`55000`](../55000/), [`54001`](../54001/)

## Sources {#sources}
[`src/backend/postmaster/bgworker.c#L1002-L1009`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/postmaster/bgworker.c#L1002)

[`src/backend/replication/logical/launcher.c#L435-L438`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/replication/logical/launcher.c#L435)

[`src/backend/replication/logical/origin.c#L976-L980`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/replication/logical/origin.c#L976)

The structured [evidence record](../data/evidence/53400.json) records fixed messages and the source/runtime boundary.
