Geo: Replicate deletion of remote stored files

When this setting is enabled, Geo syncs to secondaries' object storage.

image

But we never remove anything from object storage, so wasted storage will grow when replicated by Geo. (Note that this feature is in Beta: https://docs.gitlab.com/ee/administration/geo/replication/object_storage.html#enabling-gitlab-managed-object-storage-replication)

Deletions are done by FileRegistryRemovalWorker as part of:

  • Processing delete events
  • A background process constantly reconciling any primary/secondary differences (RegistryConsistencyWorker)

Proposal

  • FileRegistryRemovalWorker should be able to delete remote-stored files
  • FileRegistryRemovalWorker should be used properly to also delete remote-stored files (e.g. passing it what the local file path would be if the file were stored locally will not work)
Edited by Michael Kozono