Fix orphan temp table untracked_files_for_uploads
This commit is contained in:
parent
f917fc5d76
commit
67d310a1a6
2 changed files with 27 additions and 26 deletions
|
@ -43,7 +43,11 @@ module Gitlab
|
|||
|
||||
store_untracked_file_paths
|
||||
|
||||
schedule_populate_untracked_uploads_jobs
|
||||
if UntrackedFile.all.empty?
|
||||
drop_temp_table
|
||||
else
|
||||
schedule_populate_untracked_uploads_jobs
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -165,6 +169,11 @@ module Gitlab
|
|||
bulk_queue_background_migration_jobs_by_range(
|
||||
UntrackedFile, FOLLOW_UP_MIGRATION)
|
||||
end
|
||||
|
||||
def drop_temp_table
|
||||
UntrackedFile.connection.drop_table(:untracked_files_for_uploads,
|
||||
if_exists: true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,8 +8,6 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq do
|
|||
|
||||
before do
|
||||
DatabaseCleaner.clean
|
||||
|
||||
drop_temp_table_if_exists
|
||||
end
|
||||
|
||||
after do
|
||||
|
@ -44,27 +42,6 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq do
|
|||
end
|
||||
end
|
||||
|
||||
it 'ensures the untracked_files_for_uploads table exists' do
|
||||
expect do
|
||||
described_class.new.perform
|
||||
end.to change { ActiveRecord::Base.connection.table_exists?(:untracked_files_for_uploads) }.from(false).to(true)
|
||||
end
|
||||
|
||||
it 'has a path field long enough for really long paths' do
|
||||
described_class.new.perform
|
||||
|
||||
component = 'a' * 255
|
||||
|
||||
long_path = [
|
||||
'uploads',
|
||||
component, # project.full_path
|
||||
component # filename
|
||||
].flatten.join('/')
|
||||
|
||||
record = untracked_files_for_uploads.create!(path: long_path)
|
||||
expect(record.reload.path.size).to eq(519)
|
||||
end
|
||||
|
||||
context "test bulk insert with ON CONFLICT DO NOTHING or IGNORE" do
|
||||
around do |example|
|
||||
# If this is CI, we use Postgres 9.2 so this whole context should be
|
||||
|
@ -90,6 +67,21 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq do
|
|||
UploadService.new(project2, uploaded_file, FileUploader).execute
|
||||
end
|
||||
|
||||
it 'has a path field long enough for really long paths' do
|
||||
described_class.new.perform
|
||||
|
||||
component = 'a' * 255
|
||||
|
||||
long_path = [
|
||||
'uploads',
|
||||
component, # project.full_path
|
||||
component # filename
|
||||
].flatten.join('/')
|
||||
|
||||
record = untracked_files_for_uploads.create!(path: long_path)
|
||||
expect(record.reload.path.size).to eq(519)
|
||||
end
|
||||
|
||||
it 'adds unhashed files to the untracked_files_for_uploads table' do
|
||||
described_class.new.perform
|
||||
|
||||
|
@ -235,10 +227,10 @@ describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq do
|
|||
# Very new or lightly-used installations that are running this migration
|
||||
# may not have an upload directory because they have no uploads.
|
||||
context 'when no files were ever uploaded' do
|
||||
it 'does not add to the untracked_files_for_uploads table (and does not raise error)' do
|
||||
it 'deletes the `untracked_files_for_uploads` table (and does not raise error)' do
|
||||
described_class.new.perform
|
||||
|
||||
expect(untracked_files_for_uploads.count).to eq(0)
|
||||
expect(untracked_files_for_uploads.connection.table_exists?(:untracked_files_for_uploads)).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue