Ultimate

X_MIGRATE_CONCURRENT

Means

another migrator holds the migration lock

Typical cause

two overlapping deploys, or a migrator wedged on a partition — or OOM-killed with its backend still alive — still holding pg_advisory_lock(<key>) when the wait ran out. pg_advisory_lock blocks with no timeout, so that case left helm upgrade --wait sitting inside one statement, printing nothing, with the job never failing so backoffLimit never fired. As of 2026-08 a bounded pg_try_advisory_lock poll turns it into an exit code

Fix

psql "$DATABASE_URL" -c "select pid, application_name, state from pg_stat_activity join pg_locks using (pid) where locktype = 'advisory'" — pg_terminate_backend(pid) the wedged migrator, then x db migrate

Listed under Entity and database

This page as markdown