Set sharding keys for tables in 'group::project management'

Sharding keys need to be set for the tables: award_emoji, board_assignees, board_labels, board_user_preferences, description_versions, label_links, list_user_preferences, lists, notification_settings, resource_iteration_events, resource_label_events, resource_milestone_events, resource_state_events, sent_notifications, subscriptions, system_note_metadata, timelogs, work_item_hierarchy_restrictions, work_item_types, work_item_widget_definitions

This involves choosing one of the following, based on the intended behaviour of the table:

  • The table is not cell-local
    • Set gitlab_schema to gitlab_main_clusterwide.
  • The table is cell-local and requires a sharding key
    • Set gitlab_schema to gitlab_main_cell
    • Add a sharding_key or desired_sharding_key configuration. If the configuration is known but the chosen key doesn't yet meet not-null and foreign key requirements, you can add an exception to allowed_to_be_missing_not_null or allowed_to_be_missing_foreign_key to get the pipeline passing. Please link to a follow-up issue in a code comment next to the exception.
    • You may also need to set allow_cross_joins, allow_cross_transactions and allow_cross_foreign_keys if changing the schema causes pipeline failures. See db/docs/epics.yml for an example.
  • The table is cell-local and does not require a sharding key
    • Set gitlab_schema to gitlab_main_cell and
    • Set exempt_from_sharding to true.

Documentation

Edited by Mario Celi