Add sharding key to integrations table
Column intergartions.organization_id should meet all of the following requirements for Cell 1.0:
-
has no default -
is not nullable -
has a foreign key to organizations
Once the above is done we can remove the table from https://gitlab.com/gitlab-org/gitlab/-/blob/master/spec/lib/gitlab/database/sharding_key_spec.rb#L250.
About
As part of Cells preparation, all tables need to have a "sharding key" defined.
If we have questions or concerns, we can reach out to #g_tenant-scale.
Task
Sharding keys need to be set for the integrations table.
This involves choosing one of the following, based on the intended behaviour of the table:
-
The table is not cell-local
- Set
gitlab_schematogitlab_main_clusterwide.
- Set
-
The table is cell-local and requires a sharding key
- Set
gitlab_schematogitlab_main_cell - Add a
sharding_keyordesired_sharding_keyconfiguration. If the configuration is known but the chosen key doesn't yet meet not-null and foreign key requirements, you can add an exception toallowed_to_be_missing_not_nullorallowed_to_be_missing_foreign_keyto 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_transactionsandallow_cross_foreign_keysif changing the schema causes pipeline failures. Seedb/docs/epics.ymlfor an example.
- Set
-
The table is cell-local and does not require a sharding key
- Set
gitlab_schematogitlab_main_cell_localand - No foreign key references to/from organization tables
- Set
Documentation
Edited by George Koltsov