Skip to content

2.27.0.0-b150

@Sumukh-Phalgaonkar Sumukh-Phalgaonkar tagged this 28 May 05:54
Summary:
When a table under xcluster replication is dropped, the table along with all its tablets is marked as `HIDDEN`. These hidden tablets are retained for replication even though from a user's POV the table has been dropped. Since the table is kept hidden, its entries are not deleted from the stream metadata and the replica identity map.

When both CDC and Xcluster are run simultaneously on the same DB, and a table which is part of both replication mechanisms is dropped, walsender restart fails with `dropped_table not running: OBJECT_NOT_FOUND` error. This is because, during initialisation, walsender calls GetCDCStream, where we try to find the pg_table_oid for every table present in the replica identity map. This is done by calling `GetYBTableInfoById()` which in turn calls the `GetTableSchema()` master rpc. However such a call fails for the dropped table as `GetTableSchema` does not return the information about hidden tables by default.

This same issue is seen when CDC is run simultaneously with DB clone.

To fix this, during GetCDCStream we pass the `include_hidden` option as true to fetch the table_info for a table even if it is hidden.
Jira: DB-16332

Test Plan: ./yb_build.sh --cxx-test integration-tests_cdcsdk_ysql-test --gtest_filter CDCSDKYsqlTest.TestDropTableWithXcluster

Reviewers: skumar, asrinivasan, vkushwaha

Reviewed By: asrinivasan

Subscribers: ycdcxcluster

Tags: #jenkins-ready

Differential Revision: https://phorge.dev.yugabyte.com/D44071
Assets 2
Loading