Commit 54769cf1 authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre Committed by Ash McKenzie

Remove the Geo::ExpireUploadsFinder

parent 2ee5fa5f
# frozen_string_literal: true
module Geo
class ExpireUploadsFinder
UPLOAD_TYPE = 'file'
def find_project_uploads(project)
Geo::Fdw::Upload.for_model_with_type(project, UPLOAD_TYPE)
end
def find_file_registries_uploads(project)
Gitlab::Geo::Fdw::UploadRegistryQueryBuilder.new
.for_model(project)
.with_type(UPLOAD_TYPE)
end
end
end
......@@ -5,6 +5,7 @@ module Geo
include ::Gitlab::Geo::LogHelpers
BATCH_SIZE = 500
UPLOAD_TYPE = 'file'
attr_reader :project, :old_full_path
......@@ -25,7 +26,7 @@ module Geo
def execute
return unless Gitlab::Geo.secondary?
uploads = finder.find_project_uploads(project)
uploads = Geo::Fdw::Upload.for_model_with_type(project, UPLOAD_TYPE)
log_info("Expiring replicated attachments after project rename", count: uploads.count)
schedule_file_removal(uploads)
......@@ -58,11 +59,10 @@ module Geo
# rubocop: enable CodeReuse/ActiveRecord
def mark_for_resync!
finder.find_file_registries_uploads(project).delete_all
end
def finder
@finder ||= ::Geo::ExpireUploadsFinder.new
Gitlab::Geo::Fdw::UploadRegistryQueryBuilder.new
.for_model(project)
.with_type(UPLOAD_TYPE)
.delete_all
end
# This is called by LogHelpers to build json log with context info
......
require 'spec_helper'
describe Geo::ExpireUploadsFinder, :geo, :geo_fdw do
include EE::GeoHelpers
let(:project) { create(:project) }
describe '#find_project_uploads' do
context 'filtering per project uploads' do
it 'returns only objects associated with the project' do
other_upload = create(:upload, :issuable_upload)
upload = create(:upload, :issuable_upload, model: project)
create(:geo_file_registry, file_id: upload.id)
create(:geo_file_registry, file_id: other_upload.id)
uploads = subject.find_project_uploads(project)
expect(uploads.count).to eq(1)
expect(uploads.first.id).to eq(upload.id)
end
end
context 'filtering replicated uploads only' do
it 'returns only replicated or to be replicated objects' do
create(:upload, :issuable_upload, model: project)
upload = create(:upload, :issuable_upload, model: project)
create(:geo_file_registry, file_id: upload.id, success: false)
uploads = subject.find_project_uploads(project)
expect(uploads.count).to eq(1)
expect(uploads.first.id).to eq(upload.id)
end
end
end
describe '#find_file_registries_uploads' do
context 'filtering per project uploads' do
it 'returns only objects associated with the project' do
other_upload = create(:upload, :issuable_upload)
upload = create(:upload, :issuable_upload, model: project)
create(:geo_file_registry, file_id: other_upload.id)
file_registry = create(:geo_file_registry, file_id: upload.id)
files = subject.find_file_registries_uploads(project)
expect(files.count).to eq(1)
expect(files.first.id).to eq(file_registry.id)
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment