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_schema
togitlab_main_clusterwide
.
- Set
-
The table is cell-local and requires a sharding key
- Set
gitlab_schema
togitlab_main_cell
- Add a
sharding_key
ordesired_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 toallowed_to_be_missing_not_null
orallowed_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
andallow_cross_foreign_keys
if changing the schema causes pipeline failures. Seedb/docs/epics.yml
for an example.
- Set
-
The table is cell-local and does not require a sharding key
- Set
gitlab_schema
togitlab_main_cell_local
and - No foreign key references to/from organization tables
- Set
Documentation
Edited by George Koltsov