Skip to content

Metadata schema baseline

The current schema is defined by baseline revision 0001. An empty checkpoint recognizes the last prototype revision 5e2d8a9f1c30; upgrading from that specific revision converts the existing schema and preserves resource/credential IDs. Other historical revisions are not automatically supported.

The audit checked Git tags, release documentation, migration references, Compose startup, Kubernetes initialization, CI and tests. There were no release tags or documented stable migration compatibility promise. The old chain introduced and removed abandoned models and persisted source/destination mirrors. The new baseline contains only the current control-plane schema, including renewable worker and notification leases.

Fresh installations

Run alembic upgrade head against an empty metadata database. The empty legacy checkpoint does not create obsolete tables. Compose runs this before starting the API; Kubernetes uses a migration init container. Verify with alembic check. Coordinate migrations once per release before scaling API replicas. PostgreSQL migrations take a database-scoped transactional advisory lock to serialize concurrent startup migration attempts.

Existing installations

Back up metadata and its encryption key first. Do not stamp an old database as 0001: its tables and constraints differ.

For revision 5e2d8a9f1c30, alembic upgrade head (also invoked by Compose startup) performs a transactional conversion: promotes missing source/destination rows to connections without changing IDs, merges capabilities for existing IDs, retargets foreign keys, adds delivery type and worker/notification leases, and removes the now-redundant mirrors. It preserves secrets, connector names/configs, pipelines, deliveries, discovered metadata and audit records. Legacy abandoned RUNNING jobs and sending notifications are requeued. Unsupported providers or conflicting identities/credential references abort the transaction rather than discarding records. Verify with alembic check after upgrading.

Keep the backup until the environment is verified. This bridge has no automatic data-preserving downgrade; rollback requires restoring the pre-upgrade backup.

For other revisions, use the fresh-database procedure below; there is no complete historical upgrade chain.

Use a new, empty metadata database and recreate connections and control-plane resources from reviewed configuration. External Kafka topics, connector offsets, replication slots, publications and storage objects are not deleted by this migration. Reconcile existing connector ownership and names before deploying replacements to avoid duplicate capture or delivery. Retain the old database until the replacement environment is verified.

For disposable local installations only, replacing the specifically identified metadata volume is an option. Never use broad down -v commands where Kafka, database or object-storage data must be retained.

Model boundary

connections is the sole persisted reusable endpoint model. Source/destination API surfaces are capability-filtered views. Legacy Python Source and Destination names are aliases, not ORM tables. Legacy v1 response field names remain for client compatibility. Captures, discovered tables, schema versions and deliveries reference canonical connection foreign keys.