Skip to content

docs: drivers.mdx documents the driver's connect-timeout defaults but not the migration metadata-lock bound #9543

Description

@os-sam

Found while implementing #9354, surfaced by that card's docs-audit step. Filed unassigned; not fixed in #9354's PR because that dispatch declared a file surface of packages/drivers/driver-sql/src/sql-driver.ts plus its sibling test files, and a content/docs/** edit is outside it.

The gap

content/docs/data-modeling/drivers.mdx is the page scripts/docs-audit/affected-docs.mjs names first for a driver-sql change, and it already carries the matching subject: a ### Connect timeouts section documenting the two timeout defaults SqlDriver supplies, each with its value and the reasoning behind it.

#9354 adds a third driver-supplied bound of the same genre, and this one is operator-visible in a way the other two are not:

  • lock_wait_timeout is set to 120 seconds on the session performing the deferred-DDL widening ALTER, replacing MySQL's inherited default of 31,536,000 s (one year);
  • a blocked os migrate apply now fails with an ADR-0112 envelope (DATABASE_ERROR / 500) naming the lock wait, where it previously hung silently.

That is a new failure mode an operator can meet on a real migration, with a specific error message and a specific remedy, and no page documents it.

Where it belongs

The existing ### Connect timeouts section sits under the PostgreSQL heading and is specifically about the TCP/handshake bound, so this is not a row to add to that table. The natural home is the ## MySQL (via @objectstack/driver-sql) section that immediately follows it — the page's home for MySQL-specific driver behaviour, which already covers the TIMESTAMPDATETIME(3) widening this bound protects.

Worth stating there: the bound's value, that it is deliberately not configurable and not retried (the 2026-08-17 ruling on #9354), that only the operator-initiated flush is bounded, and what the operator should do when they meet the refusal (find the lock holder, re-run — the widening is idempotent).

⚠️content/docs/releases/v17.mdx also appears in the affected-docs output; per CLAUDE.md that file is written centrally at release time and must not be edited as part of this.

Related: #9354 (the change that introduces the bound).

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions