ConduitIO / ConduitIO/conduit-connector-postgres

B1 follow-up: deliver the boundary DML instead of dropping it (no-drop halt)

Open
#330 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
19
Forks
12
Avg merge
12h 20m
Merged PRs (30d)
5

Description

Decision (DeVaris, 2026-08-30): v0.20 ships the DISCLOSE option — the halt message tells the operator the first record under the new schema shape is not delivered. The no-drop design is the follow-up.

Current mechanism: the drift marker emits at the first new-shape DML's LSN (pgoutput delivers RelationMessages with WALStart 0, so the marker cannot carry the relation-message LSN — D1 deviation). That boundary DML is D4-skipped in-run and dropped at the wire on restart (subscription.go WALStart <= StartLSN guard). One record per halt episode, position claims it was covered.

No-drop design: deliver the boundary DML as a normal record immediately BEFORE the marker in the same batch, so the position's semantics hold and nothing is lost. Changes batch/ack semantics on the drift path — needs its own review cycle, not a squeeze into B1.

Ref: PR #329, design doc 20260829-dbz3-b1-schema-drift-escape-hatch.md (D1/D4/D5/FM3).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with subscription.go and the D1/D4/D5/FM3 sections of 20260829-dbz3-b1-schema-drift-escape-hatch.md, then review PR #329 for the existing drift path. Trace the batch and acknowledgement semantics around the WALStart guard and the marker. Done means the boundary DML is delivered as a normal record immediately before the marker, with position semantics preserved and no record dropped on restart.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, postgresql
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.