Skip to content

Convert PK/FK from int4 to int8: events.id, push_event_payloads.event_id, and ci_build_trace_sections.id. Stage 1 of 2.

Production Change - Criticality 4 C4

Change Objective Convert data type of events.id, push_event_payloads.event_id, and ci_build_trace_sections.id from int4 to int8.
Change Type Type described above
Services Impacted Postgres
Change Team Members @Finotto @NikolayS
Change Severity Not critical right now, but highly critical for the future (if not resolved will lead to partial service degradation (inability to INSERT new rows to affected tables)
Buddy check or tested in staging @abrandl
Schedule of the change Date and time (with timezone)
Duration of the change Time to execute the change ( including a possible rollback )
Detailed steps for the change. Each step must include: - pre-conditions for execution of the step, - execution commands for the step, - post-execution validation for the step , - rollback of the step

#Additional details

The design is described here: https://nik-blueprint-int4-to-int8.about-src.gitlab.com/handbook/engineering/infrastructure/blueprint/201903-postgres-int4-pk/index.html

The change is in this MR (complete, waiting for approval): https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24512

There will be a long-lasting background migration initiated by deployment. After this change is deployed, the following is to be monitored in regular fashion (it is outside of the scope of this ticket itself):

  • the progress of background migration (TBD: instructions how to monitor it)
  • the growth rates of tables involved in this change
  • autovacuum activity (first of all: processing of the tables involved in this change).