[go: up one dir, main page]

Skip to content

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 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_local and
    • No foreign key references to/from organization tables

Documentation

Edited by George Koltsov