For the complete documentation index, see llms.txt. This page is also available as Markdown.

YugabyteDB troubleshooting

Operational troubleshooting for YugabyteDB when used as Curio’s control plane.

Many “Curio issues” are actually control-plane issues (YugabyteDB health, schema, connectivity, or performance).

Before doing anything risky:

  • take a backup (see YugabyteDB Backup)

  • stop Curio writers if you are restoring/downgrading


1) Quick health checklist

On the Yugabyte nodes:

  • yugabyted status

  • check yb-master and yb-tserver logs for FATALs

From a Curio node:

ysqlsh -h "$CURIO_DB_HOST" -p "${CURIO_DB_PORT:-5433}" -U "$CURIO_DB_USER" -d "${CURIO_DB_NAME:-yugabyte}" -c "select 1;"

If the above is slow/intermittent, fix DB health first.


2) Connection string / multi-host setups

Curio commonly uses a comma-separated host list:

CURIO_DB_HOST=yugabyte1,yugabyte2,yugabyte3
CURIO_DB_PORT=5433
CURIO_DB_NAME=yugabyte

Tips:

  • Ensure all hosts are reachable from all Curio nodes.

  • If you disable load balancing in Curio, it may pin to the first host; keep that host stable.


3) ulimit / file descriptor exhaustion

Symptoms:

  • DB is unstable under load, or tserver logs mention file descriptor issues.

What to do:

  • Ensure you applied recommended nofile limits (see PDP guide and Yugabyte docs).

  • Restart services after changing persistent limits.


4) Upgrade / downgrade safety

Rules of thumb:

  • Back up before changing Curio or Yugabyte versions.

  • Stop Curio before restoring a DB dump.

  • If a schema migration fails, capture:

    • the migration filename

    • full error output

    • Yugabyte version

Common migration blocker:

  • Rewriting of YB table is not yet implemented (SQLSTATE 0A000)


5) Common SQLSTATE errors in support

SQLSTATE 23505 (duplicate key)

Often indicates:

  • concurrency/retries inserting the same identity row.

Action:

  • verify whether the app is progressing or stuck.

  • if stuck, correlate with task errors and consider a targeted restart of the relevant Curio subsystem.

relation "curio.<table>" does not exist

Usually indicates:

  • schema migrations didn’t run, or you are connected to the wrong DB name/schema.

Action:

  • confirm CURIO_DB_NAME and that schema curio exists.


6) Backups

Follow the backup guidance here:

Last updated