Skip to content

Deprecate background upload

Problem to solve

GitLab currently supports object storage for a range of providers. It is highly configurable. There are two types of upload-to-object-storage mechanism:

  • Background upload
  • Direct upload

Two is too many. We should have a single mechanism if at all possible.

Target audience

Further details

Uploads to object storage should happen through direct_upload so that GitLab deployments are cloud-native-ready.

The only known case where background upload is necessary is when using an object storage provider for which direct uploads are not working. We found this to be true for OpenStack when using their Swift API: https://docs.gitlab.com/ee/administration/object_storage.html#openstack-compatible-connection-settings. We do support Open Stack through their S3 compatible API, however.

According to https://app.periscopedata.com/app/gitlab/679200/Enablement::Memory, OpenStack is in use in self-managed installations for the following buckets:

  • lfs
  • artifacts
  • packages

The reported events are 3 orders of magnitude less frequent than the most popular options like AWS.

Proposal

Remove background upload as an option, and always use direct upload instead

What does success look like, and how can we measure that?

As a systems administrator, I don't have to think about how GitLab orchestrates the transfer of files into object storage. There should be a single, right way to do it, that works with all supported object stores, and doesn't require lots of complicated moving parts in the background. Namely: direct upload. We should remove background upload if at all possible.

Links / references

Edited by Matthias Käppler