Operations

State & durability

Cursors in Postgres, checkpoint-after-commit, and exactly-once from the warehouse's view.

The critical reliability decision in Fabric: cursors live in PostgreSQL, not in Iceberg. There are no debezium_offset_* or debezium_schema_history_* tables.

Checkpoint after commit

Each source checkpoints its cursor to Fabric's PostgreSQL after a writer commit. A connector only advances its source-side position to a cursor the writer reported as committed, so the warehouse is never left behind the position it acknowledged.

Exactly-once from the warehouse's view

On restart, the runner resumes from the last checkpointed cursor. From the warehouse's perspective that's exactly-once: duplicates are deduped at write time via the identifier fields / upsert semantics.

No tombstones to clean up

Because cursors live in PostgreSQL, a reset is just "clear the cursor and drop the tables." There's no topic cleanup, no version bumping, no schema-history tombstone tables.

The simple version

Data isn't lost, and a restart picks up where it left off. The warehouse only ever acknowledges a cursor after the corresponding write is committed.