Ian Hansen
06/15/2026, 9:34 PMkapa.ai
06/15/2026, 9:34 PM_airbyte_generation_id column increments, allowing you to distinguish records from before and after the refresh.
[Refresh & Retain Records]
2. Refresh Streams and Remove Records This option only keeps data that was newly synced since the refresh was initiated. Any records previously in the destination that no longer exist in the source will be removed.
Consequences:
• Produces a clean, up-to-date copy of the source data in your destination — a 1:1 mirror.
• Irreversible — if your source does not retain all of its historical records, this may lead to data loss.
• If you need to preserve history, you should back up your destination data before running this option.
• Recommended for database replication use cases where you want the destination to exactly mirror the source.
[Refresh & Remove Records]
Key Points Applicable to Both Options • No data downtime: While the refresh is running, the previous data remains queryable. The new data is only swapped in upon successful completion — unlike the older "Reset Sync" behavior. [Refreshing your data]
• Scheduled syncs are blocked until the refresh completes.
• Streams not being refreshed will continue to sync normally during the refresh.
• Both refresh types are resumable if the source and destination support checkpointing.
• The _airbyte_generation_id increments with every refresh, helping you track which generation of data each record belongs to. [Data Generations]
> Note: For the Postgres source specifically, availability of these options depends on the sync mode configured for each stream (e.g., "Refresh and Remove Records" is only available for Incremental | Append + Dedupe streams, not for Full Refresh modes). [Refreshing your data] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Ian Hansen
06/15/2026, 9:36 PMIan Hansen
06/15/2026, 9:36 PMkapa.ai
06/15/2026, 9:36 PMIan Hansen
06/16/2026, 8:25 PMIan Hansen
06/16/2026, 8:25 PMkapa.ai
06/16/2026, 8:25 PM3.7.0, 3.6.18, etc.) [CTID bug; CTID cursor reset]
◦ Airbyte OSS / Cloud and its version.
• Sync configuration
◦ Sync mode: confirm it’s Incremental and whether it’s:
▪︎ Standard cursor / CTID-based incremental, or
▪︎ CDC (Debezium-based) incremental. [CDC error; CDC LSN bug]
◦ Destination type and version.
◦ Cursor field (e.g. updated_at, id) and primary key.
◦ Any advanced Postgres source settings (e.g. xmin vs CDC, replication slot, publication).
• Reproduction details
◦ Approximate time window when:
▪︎ The two records were inserted in Postgres.
▪︎ The Airbyte incremental sync ran.
◦ Whether those rows:
▪︎ Appeared in the source DB before and after the sync.
▪︎ Were missing in the destination until you ran a full refresh.
◦ Whether the incremental sync run was marked successful in Airbyte UI (no errors). Similar “silent miss” behavior is documented in other issues. [CTID bug]
• Logs
◦ Attach the full logs for:
▪︎ The incremental sync that missed the records.
▪︎ The full refresh that later picked them up.
◦ This is exactly what maintainers ask for in similar “records missed” reports. [JSON not copied]
• Table / workload characteristics
◦ Table size and write pattern (e.g. “high write rate, multiple inserts per second”).
◦ Whether there are concurrent updates to the same rows during sync (relevant to CTID-based scanning issues). [CTID bug]
3. Getting help / follow-up • After you open the issue, it will be triaged (often by an AI assistant plus a human maintainer) and, if needed, escalated internally, as you can see in similar Postgres issues. [CTID bug; CTID cursor reset]
• For more interactive help, you can also:
◦ Join the Airbyte Community Slack and share the issue link for discussion.
◦ If you’re an Airbyte Cloud customer, open a support ticket and reference your GitHub issue. [Issues & requests]
The knowledge sources don’t give a specific root cause for “two inserts at the exact sync time” in your scenario, but they do show that similar “missed records” and CTID/CDC edge cases are actively investigated once reported with detailed logs and configuration. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Ian Hansen
06/16/2026, 9:48 PMkapa.ai
06/16/2026, 9:49 PM**Summary**
During an incremental sync from Postgres, the connector missed two records that were inserted into the source database at almost the exact time the Airbyte sync started. The sync completed successfully with no errors, but those two records did not appear in the destination until we ran a full refresh.
**Environment**
- Airbyte deployment: (Cloud or OSS; version X.Y.Z)
- Source: Postgres
- Connector: source-postgres (version X.Y.Z)
- Postgres version: (e.g., 13.10, 15.12, etc.)
- Destination: (e.g., Snowflake / BigQuery / Postgres; connector version X.Y.Z)
**Sync configuration**
- Sync mode: Incremental
- Destination sync mode: (Append / Append + Deduped)
- Replication method:
- [ ] Standard (CTID / cursor-based, non-CDC)
- [ ] CDC (Debezium-based)
- Cursor field: `<your cursor column, e.g. updated_at or id>`
- Primary key: `<pk column(s)>`
- Any advanced Postgres source settings:
- (e.g., xmin vs CDC, replication slot name, publication name, etc.)
**Table / workload characteristics**
- Approx. row count: `<N rows>`
- Write pattern: records are inserted/updated in batches; in this case, two inserts happened very close to the sync start time.
- Are there frequent concurrent writes/updates during sync? (Yes/No; brief description)
**Steps to reproduce**
1. Configure a connection from Postgres to `<destination>` with:
- Incremental sync on table `<table_name>`
- Cursor field `<cursor_column>`
2. Run an incremental sync at time **T0**.
3. At approximately **T0** (same minute/second), insert two new rows into `<table_name>`.
4. Let the incremental sync complete (status is **Succeeded** in Airbyte).
5. Check the destination:
- The two new rows are **present in the source** but **missing in the destination**.
6. Trigger a **Full Refresh** on the same connection.
7. After the full refresh completes, the previously missing rows appear in the destination.
**Expected behavior**
All rows that exist in the source at or before the end of the incremental sync window should be replicated to the destination. Rows inserted around the sync time should not be permanently missed; they should either appear in that sync or in a subsequent incremental sync, without requiring a manual full refresh.
**Actual behavior**
- The incremental sync completed successfully with no errors.
- Two rows inserted at (or very close to) the sync start time were not replicated.
- Subsequent incremental syncs did not pick them up.
- Only a manual full refresh caused those rows to appear in the destination.
**Evidence / verification**
- Verified in Postgres that the two rows existed before and after the incremental sync.
- Verified in the destination that:
- They were missing after the incremental sync.
- They appeared only after the full refresh.
- No obvious errors or warnings in the Airbyte logs for the incremental sync.
**Logs**
- Attached logs for:
- The incremental sync that missed the records.
- The full refresh that later picked them up.
(Please see attached log files.)
You can fill in the placeholders (versions, table name, cursor column, timestamps) with your actual details before submitting. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.