Geo: Replicate Dependencies::DependencyListExport::Part uploads
What does this MR do and why?
Adds Geo SSF (self-service framework) replication and verification for the dependency_list_export_part_uploads partition table so Dependencies::DependencyListExport::Part attachments are mirrored from the primary to secondary Geo sites alongside the other upload partitions.
Generated with scripts/geo/generate-blob-replicator:
scripts/geo/generate-blob-replicator \
--replicable-name=dependency_list_export_part_upload \
--model-class=Dependencies::DependencyListExport::Part \
--table-name=dependency_list_export_part_uploads \
--sharding-key=organization_id \
--milestone=19.2 \
--upload-partitionThe registry and state index names were shortened to the idx_dlep_upl_* convention to stay within PostgreSQL's 63-character identifier limit, matching the sibling vulnerability_export_part_upload tables.
References
- Closes #589908 (closed)
- Parent epic: &20933
How to set up and validate locally
Requires a primary + secondary Geo setup (e.g. two GDKs).
-
On both sites, run migrations:
bin/rake db:migrate db:migrate:geo -
On the primary, enable replication:
Feature.enable(:geo_dependency_list_export_part_upload_replication) -
Generate a group-level dependency list export on the primary that is large enough to be split into parts (each part writes an attachment to
dependency_list_export_part_uploads). -
On the secondary, confirm the registry row was created and replication + verification succeeded:
Geo::DependencyListExportPartUploadRegistry.last=> state:'synced', verification_state:'succeeded' -
Confirm the file is present at the secondary's upload path and that
verification_checksummatches the primary's. -
Optionally re-verify:
Geo::DependencyListExportPartUploadRegistry.last.verification_pending!
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist.