Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CDCSDK] Test_decoding UPDATE messages contain an empty old-key field #23353

Closed
yugabyte-ci opened this issue Aug 1, 2024 · 0 comments
Closed
Assignees
Labels
area/cdcsdk CDC SDK jira-originated kind/bug This issue is a bug priority/high High Priority

Comments

@yugabyte-ci
Copy link
Contributor

yugabyte-ci commented Aug 1, 2024

Jira Link: DB-12279

@yugabyte-ci yugabyte-ci added area/cdcsdk CDC SDK jira-originated kind/bug This issue is a bug priority/high High Priority labels Aug 1, 2024
Sumukh-Phalgaonkar added a commit that referenced this issue Aug 14, 2024
Summary:
It was observed that currently test_decoding adds the field `old-key` to every UPDATE output message (if the replica identity is not FULL, this field is left empty). This is a deviation from PG, where the UPDATE output messages contain `old-key` field only in case of replica identity FULL.

In test_decoding code, we check if the old-tuple is not null and add the field `old-key` to the output string. The values to this field are added by iterating over attributes of the old tuple. However, in YB the old-tuple is always not null. If the replica identity is not FULL, then the attributes of the old tuple are NULL. This results in the above mentioned behaviour. In other words the issue arises because the old-tuple being sent for UPDATES is not NULL for replica identities having no before image.

To fix this, in `YBDecodeUpdate()` function we populate the old tuple only if the replica identity is FULL. Otherwise a NULL old tuple is sent out.
Jira: DB-12279

Test Plan:
Jenkins: test regex: .*ReplicationSlot.*
./yb_build.sh --java-test 'org.yb.pgsql.TestPgReplicationSlot#testWithTestDecodingPlugin'

Reviewers: asrinivasan, stiwary

Reviewed By: stiwary

Subscribers: skumar, yql, ycdcxcluster

Tags: #jenkins-ready

Differential Revision: https://phorge.dev.yugabyte.com/D36971
jasonyb pushed a commit that referenced this issue Aug 15, 2024
Summary:
 adca727 [PLAT-14226][PLAT-14227] update login flow and RBAC logic to include group memberships
 631592d [PLAT-14144]add retry policy for GcpProjectApiClient
 d1ac140 [#23418] docdb: Fix clone seq_no not being persisted
 Excluded: ade3a0e [#23461] YSQL: Fix memory corruption in UPDATE pushdown
 fd0c1e0 [PLAT-5874]: Expose state of db master "load balancing" process in Platform UI
 e6c2ee0 [#23459] YSQL: Fix asan YbAdminSnapshotScheduleTest.SysCatalogRetention failure
 43261b7 [#23421] YSQL: Reset catalog read time after table prefetching
 dd123d4 [doc] CLI name tidyups (#23477)
 Excluded: dc871f9 [#22843] YSQL: Change the CatalogCacheMisses prometheus name to have a label
 9d2b83a [doc][ybm] Slow query latency histogram (#23486)
 d50171b [PLAT-14900] Exclude empty string from regex validation for AZUoptional fields
 adf992d [#23237 ] DocDB: Master side DDL locking  - Part 1/happy path
 49039ec [PLAT-14620][YBA CLI] CLI gives invalid JSON output
 db993c6 [#23140] docdb: Clear table txn verifier state after drop
 0b93c5d [PLAT-14925] Should not allow turning off DB audit logging runtime config if enabled on a universe
 d0500a0 [#22989] YSQL: Fix regular expression pushdown
 6a4f23b [#23353] CDCSDK: Send null old tuples for updates without before image

Test Plan: Jenkins: rebase: pg15-cherrypicks

Reviewers: jason, tfoucher

Tags: #jenkins-ready

Differential Revision: https://phorge.dev.yugabyte.com/D37309
Sumukh-Phalgaonkar added a commit that referenced this issue Aug 19, 2024
…thout before image

Summary:
######Backport Description
No merge conflicts were encountered.

######Original Description
It was observed that currently test_decoding adds the field `old-key` to every UPDATE output message (if the replica identity is not FULL, this field is left empty). This is a deviation from PG, where the UPDATE output messages contain `old-key` field only in case of replica identity FULL.

In test_decoding code, we check if the old-tuple is not null and add the field `old-key` to the output string. The values to this field are added by iterating over attributes of the old tuple. However, in YB the old-tuple is always not null. If the replica identity is not FULL, then the attributes of the old tuple are NULL. This results in the above mentioned behaviour. In other words the issue arises because the old-tuple being sent for UPDATES is not NULL for replica identities having no before image.

To fix this, in `YBDecodeUpdate()` function we populate the old tuple only if the replica identity is FULL. Otherwise a NULL old tuple is sent out.
Jira: DB-12279

Original commit: 6a4f23b / D36971

Test Plan:
Jenkins: test regex: .*ReplicationSlot.*
./yb_build.sh --java-test 'org.yb.pgsql.TestPgReplicationSlot#testWithTestDecodingPlugin'

Reviewers: asrinivasan, stiwary, siddharth.shah

Reviewed By: siddharth.shah

Subscribers: ycdcxcluster, yql, skumar

Tags: #jenkins-ready

Differential Revision: https://phorge.dev.yugabyte.com/D37305
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/cdcsdk CDC SDK jira-originated kind/bug This issue is a bug priority/high High Priority
Projects
None yet
Development

No branches or pull requests

2 participants