Commit 8230b774 authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch 'fix/gb/fix-background-pipeline-stages-migration' into 'master'

Fix background pipeline stages migration

Closes #44135

See merge request gitlab-org/gitlab-ce!18076
parents 8b37ce6f d756150d
---
title: Fix exceptions raised when migrating pipeline stages in the background
merge_request: 18076
author:
type: fixed
...@@ -12,6 +12,7 @@ module Gitlab ...@@ -12,6 +12,7 @@ module Gitlab
class Build < ActiveRecord::Base class Build < ActiveRecord::Base
self.table_name = 'ci_builds' self.table_name = 'ci_builds'
self.inheritance_column = :_type_disabled
def ensure_stage!(attempts: 2) def ensure_stage!(attempts: 2)
find_stage || create_stage! find_stage || create_stage!
......
...@@ -51,4 +51,20 @@ describe Gitlab::BackgroundMigration::MigrateBuildStage, :migration, schema: 201 ...@@ -51,4 +51,20 @@ describe Gitlab::BackgroundMigration::MigrateBuildStage, :migration, schema: 201
expect { described_class.new.perform(1, 6) } expect { described_class.new.perform(1, 6) }
.to raise_error ActiveRecord::RecordNotUnique .to raise_error ActiveRecord::RecordNotUnique
end end
context 'when invalid class can be loaded due to single table inheritance' do
let(:commit_status) do
jobs.create!(id: 7, commit_id: 1, project_id: 123, stage_idx: 4,
stage: 'post-deploy', status: :failed)
end
before do
commit_status.update_column(:type, 'SomeClass')
end
it 'does ignore single table inheritance type' do
expect { described_class.new.perform(1, 7) }.not_to raise_error
expect(jobs.find(7)).to have_attributes(stage_id: (a_value > 0))
end
end
end end
module MigrationsHelpers module MigrationsHelpers
def table(name) def table(name)
Class.new(ActiveRecord::Base) { self.table_name = name } Class.new(ActiveRecord::Base) do
self.table_name = name
self.inheritance_column = :_type_disabled
end
end end
def migrations_paths def migrations_paths
......
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