You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[#28744] CDC: Stream large transactions for unqualified tables correctly
Summary:
In cdc producer, for colocated / co-tables, any intent corresponding to an unqualified table is skipped while populating records. However we do not move the reverse index key and write id forward for such intents. If a large transaction (requiring 2 or more GetChanges calls to ship completely), comprising entirely of records for an unqualified table is encountered, then virtual WAL gets stuck, as we do not populate the reverse index key and write id in the GetChanges response. Every time the virtual WAL calls GetChanges, we read the same set of intents and send back an empty response.
This bug also affects the gRPC model of CDC, where the connector task would get stuck (analogous to the virtual WAL), due to non-movement of the reverse index key and write id.
To fix this we move the reverse index key and write id forward while skipping intents for unqualified colocated / co-tables. This way we ensure that successive GetChanges calls from the virtual WAL read different sets of intents, eventually sending a record belonging to a qualified table or a safepoint record.
Jira: DB-18452
Test Plan: ./yb_build.sh --cxx-test integration-tests_cdcsdk_ysql-test --gtest_filter CDCSDKYsqlTest.TestLargeTxnOnCatalogTablet
Reviewers: skumar, asrinivasan
Reviewed By: asrinivasan
Subscribers: ycdcxcluster
Tags: #jenkins-ready
Differential Revision: https://phorge.dev.yugabyte.com/D47417
0 commit comments