Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/23079 and https://gitlab.com/gitlab-org/gitlab-ce/issues/34412
Replaces https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8662
/cc @stanhu @yorickpeterse @to1ne @zj
[skip ci]