yugabyte / yugabyte-db

YugabyteDB - the cloud native distributed SQL database for mission-critical applications.
https://www.yugabyte.com
Other
8.99k stars 1.07k forks source link

[DocDB] Colocation - Dropping a colocated table does not remove it from table list of SysTabletsEntryPB #14609

Open sanketkedia opened 2 years ago

sanketkedia commented 2 years ago

Jira Link: DB-3979

Description

When a colocated table is completely DELETED (not HIDDEN), it is not removed from the table_ids list of SysTabletsEntryPB of the colocated tablet. Given that the table has no chance of coming back, we should remove it from this list as well. We have a couple of places in the code where we log a warning if tables from this list aren't found in the cluster because of this reason; they should also be modified to FATAL so that other types of genuine bugs such as corruption can be detected.

yifanguan commented 1 year ago

Duplicate of https://github.com/yugabyte/yugabyte-db/issues/11129.

yifanguan commented 1 year ago

This original issue is solved because of commit 98645ac6caac29b0fba4db2a3b5b0cb7c6726a2e. It changes the way we persist the info of the set of tables hosted on a colocated tablet on master. However, with this new schema of SysTabletsEntryPB, we keep one table_ids_ list in memory in TabletInfo. Not sure what can happen, if we do not remove deleted tables from this in memory table_ids_.

  // Transient, in memory list of table ids hosted by this tablet. This is not persisted.
  // Only used when FLAGS_use_parent_table_id_field is set.
  std::vector<TableId> table_ids_ GUARDED_BY(lock_);

Thus, I leave this issue open but move out of the colocation epic.