[ source-postgres] CDC 初始快照可以在套接字状态检查和拒绝后跳过未完成的 CTID 快照
作者: likury创建于 2026年6月29日更新于 2026年9月17日
标签type/bugarea/connectorscommunityneeds-triageconnectors/source/postgresautoteamteam/use
QQ 连接器名称
源输出
QQ 连接器版本
3.8.1 国家
- 发生什么错误了?
同步时
有关情况
□ 总结 在PostgreSQL CDC模式下,并行的基于 CTID 的初始快照分区可以在序列 CTID 检查站核算前释放出记录. 在套接字模式中,它可以生成“ sourceStats.recordCount” 与状态分区的目的地/平台跟踪记录不符的全球状态消息。 目的地拒绝CTID快照状态为无效,而心跳/WAL CDC共享状态仍然可能被接受. 重试时, Airbyte 则可以拥有 CDC 共享状态,但缺失或空出每流 CTID shapt state. 源发站CDC分区工厂将"可能为Ctid = null"解释为"snapshot complete",并只恢复CDC,跳过未完成的快照. □ 预期行为 如果初始的CDC快照无法持久地检查,下一次重试应该恢复或重启 CTID快照,然后推进到只读的CDC. 在同时快照期间发出的国家信息应当有与同一目的地/平台跟踪分区相匹配的源记录计数。 □ 实际行为 同步会发出无效的全球状态消息, 如 : ‘来源状态消息校验和无效:状态记录计数. 不等于平台跟踪记录计数. 被拒绝的状态包含 CTID快照流状态,但被接受的状态仍然可以包含CDC所共享的WAL/心跳状态. 重试后, source-postgres看到 CDC 共享状态为空或缺失 CTID 流状态并跳过剩余的初始快照. □ 根源分析 似乎有两个相关问题。
- 在Bulk CDK套接字路径中,JDBC分区读取器与套接字
partition-id'同时放出记录,但FeedReader ' 稍后连续使用分区检查站。StateManager.Global StateManager.checkpoint ()'可以将“sourceStats.recordCount”从溪流分区中输出出全球状态,而不宣传匹配的顶层partition id'。FeedReader. may beCheckpoint ()' 然后生成随机的顶级 “ partition id ” , 因此目的状态验证会发现记录不匹配。 相关文件 :空字节-cdk/bulk/core/extract/src/main/kotlin/io/空字节/cdk/read/FeedReader.kt'airbyte-cdk/bulk/core/extract/src/main/kotlin/io/airbyte/cdk/read/StateManager.kt' 页面存档备份,存于互联网档案馆.airbyte-cdk/bulk/toolkits/extract-jdbc/src/main/kotlin/io/airbyte/cdk/read/JdbcpartitionReader.kt' 页面存档备份,存于互联网档案馆. - 在源发式CDC模式中,空流状态QQ或缺失的CTID状态与已完成的CTID快照状态相同,因为"可能为Ctid == 无效". 相关文件 : `空字节-集成/连接/来源-后置/src/main/kotlin/io/airbyte/集成/源/后置/后置/Postgres SourceJdbcPartition Factory.kt'
QQ 相关日志输出
贝壳 2026-06-29 09:36:04 复制-操作器错误 来源状态消息校验和无效:状态记录计数 1963-104.0 不等于平台跟踪记录计数 . . . . . . .
内容来源: airbytehq/airbyte