Commit a4d08e6b authored by Rydkin Maxim's avatar Rydkin Maxim

rename `auto_canceled_by` and add foreign key

parent 40f67c1d
...@@ -7,7 +7,9 @@ module Ci ...@@ -7,7 +7,9 @@ module Ci
belongs_to :project belongs_to :project
belongs_to :user belongs_to :user
belongs_to :auto_canceled_by, class_name: 'Ci::Pipeline'
has_many :auto_canceled_pipelines, class_name: 'Ci::Pipeline', foreign_key: 'auto_canceled_by_id'
has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id
has_many :builds, foreign_key: :commit_id has_many :builds, foreign_key: :commit_id
has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id
......
...@@ -69,7 +69,7 @@ module Ci ...@@ -69,7 +69,7 @@ module Ci
Gitlab::OptimisticLocking.retry_lock(auto_cancelable_pipelines) do |cancelables| Gitlab::OptimisticLocking.retry_lock(auto_cancelable_pipelines) do |cancelables|
cancelables.find_each do |cancelable| cancelables.find_each do |cancelable|
cancelable.cancel_running cancelable.cancel_running
cancelable.update_attributes(auto_canceled_by: pipeline.id) cancelable.update_attributes(auto_canceled_by_id: pipeline.id)
end end
end end
end end
......
# See http://doc.gitlab.com/ce/development/migration_style_guide.html # See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab. # for more information on how to write migrations for GitLab.
class AddAutoCanceledByToPipeline < ActiveRecord::Migration class AddAutoCanceledByIdToPipeline < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime. # Set this constant to true if this migration requires downtime.
...@@ -21,9 +21,15 @@ class AddAutoCanceledByToPipeline < ActiveRecord::Migration ...@@ -21,9 +21,15 @@ class AddAutoCanceledByToPipeline < ActiveRecord::Migration
# #
# To disable transactions uncomment the following line and remove these # To disable transactions uncomment the following line and remove these
# comments: # comments:
# disable_ddl_transaction! disable_ddl_transaction!
def change def up
add_column :ci_commits, :auto_canceled_by, :integer add_column :ci_pipelines, :auto_canceled_by_id, :integer
add_concurrent_foreign_key :ci_pipelines, :ci_pipelines, column: :auto_canceled_by_id, on_delete: 'set null'
end
def down
remove_foreign_key :ci_pipelines, column: :auto_canceled_by_id
remove_column :ci_pipelines, :auto_canceled_by_id
end end
end end
...@@ -61,7 +61,6 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -61,7 +61,6 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.boolean "shared_runners_enabled", default: true, null: false t.boolean "shared_runners_enabled", default: true, null: false
t.integer "max_artifacts_size", default: 100, null: false t.integer "max_artifacts_size", default: 100, null: false
t.string "runners_registration_token" t.string "runners_registration_token"
t.integer "max_pages_size", default: 100, null: false
t.boolean "require_two_factor_authentication", default: false t.boolean "require_two_factor_authentication", default: false
t.integer "two_factor_grace_period", default: 48 t.integer "two_factor_grace_period", default: 48
t.boolean "metrics_enabled", default: false t.boolean "metrics_enabled", default: false
...@@ -99,17 +98,18 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -99,17 +98,18 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.text "help_page_text_html" t.text "help_page_text_html"
t.text "shared_runners_text_html" t.text "shared_runners_text_html"
t.text "after_sign_up_text_html" t.text "after_sign_up_text_html"
t.boolean "sidekiq_throttling_enabled", default: false
t.string "sidekiq_throttling_queues"
t.decimal "sidekiq_throttling_factor"
t.boolean "housekeeping_enabled", default: true, null: false t.boolean "housekeeping_enabled", default: true, null: false
t.boolean "housekeeping_bitmaps_enabled", default: true, null: false t.boolean "housekeeping_bitmaps_enabled", default: true, null: false
t.integer "housekeeping_incremental_repack_period", default: 10, null: false t.integer "housekeeping_incremental_repack_period", default: 10, null: false
t.integer "housekeeping_full_repack_period", default: 50, null: false t.integer "housekeeping_full_repack_period", default: 50, null: false
t.integer "housekeeping_gc_period", default: 200, null: false t.integer "housekeeping_gc_period", default: 200, null: false
t.boolean "sidekiq_throttling_enabled", default: false
t.string "sidekiq_throttling_queues"
t.decimal "sidekiq_throttling_factor"
t.boolean "html_emails_enabled", default: true t.boolean "html_emails_enabled", default: true
t.string "plantuml_url" t.string "plantuml_url"
t.boolean "plantuml_enabled" t.boolean "plantuml_enabled"
t.integer "max_pages_size", default: 100, null: false
t.integer "terminal_max_session_time", default: 0, null: false t.integer "terminal_max_session_time", default: 0, null: false
t.string "default_artifacts_expire_in", default: "0", null: false t.string "default_artifacts_expire_in", default: "0", null: false
t.integer "unique_ips_limit_per_user" t.integer "unique_ips_limit_per_user"
...@@ -251,7 +251,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -251,7 +251,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.integer "duration" t.integer "duration"
t.integer "user_id" t.integer "user_id"
t.integer "lock_version" t.integer "lock_version"
t.integer "auto_canceled_by" t.integer "auto_canceled_by_id"
end end
add_index "ci_pipelines", ["project_id", "ref", "status"], name: "index_ci_pipelines_on_project_id_and_ref_and_status", using: :btree add_index "ci_pipelines", ["project_id", "ref", "status"], name: "index_ci_pipelines_on_project_id_and_ref_and_status", using: :btree
...@@ -688,10 +688,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -688,10 +688,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.string "avatar" t.string "avatar"
t.boolean "share_with_group_lock", default: false t.boolean "share_with_group_lock", default: false
t.integer "visibility_level", default: 20, null: false t.integer "visibility_level", default: 20, null: false
t.datetime "deleted_at"
t.boolean "request_access_enabled", default: false, null: false t.boolean "request_access_enabled", default: false, null: false
t.text "description_html" t.datetime "deleted_at"
t.boolean "lfs_enabled" t.boolean "lfs_enabled"
t.text "description_html"
t.integer "parent_id" t.integer "parent_id"
end end
...@@ -920,8 +920,8 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -920,8 +920,8 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.boolean "lfs_enabled" t.boolean "lfs_enabled"
t.text "description_html" t.text "description_html"
t.boolean "only_allow_merge_if_all_discussions_are_resolved" t.boolean "only_allow_merge_if_all_discussions_are_resolved"
t.boolean "printing_merge_request_link_enabled", default: true, null: false
t.integer "auto_cancel_pending_pipelines", default: 0, null: false t.integer "auto_cancel_pending_pipelines", default: 0, null: false
t.boolean "printing_merge_request_link_enabled", default: true, null: false
end end
add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree
...@@ -1241,10 +1241,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -1241,10 +1241,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.boolean "hide_project_limit", default: false t.boolean "hide_project_limit", default: false
t.string "unlock_token" t.string "unlock_token"
t.datetime "otp_grace_period_started_at" t.datetime "otp_grace_period_started_at"
t.string "incoming_email_token"
t.boolean "ldap_email", default: false, null: false t.boolean "ldap_email", default: false, null: false
t.boolean "external", default: false t.boolean "external", default: false
t.string "organization" t.string "organization"
t.string "incoming_email_token"
t.boolean "authorized_projects_populated" t.boolean "authorized_projects_populated"
t.boolean "ghost" t.boolean "ghost"
t.boolean "notified_of_own_activity" t.boolean "notified_of_own_activity"
...@@ -1299,6 +1299,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do ...@@ -1299,6 +1299,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do
add_foreign_key "boards", "projects" add_foreign_key "boards", "projects"
add_foreign_key "chat_teams", "namespaces", on_delete: :cascade add_foreign_key "chat_teams", "namespaces", on_delete: :cascade
add_foreign_key "ci_pipelines", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_262d4c2d19", on_delete: :nullify
add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade
add_foreign_key "issue_metrics", "issues", on_delete: :cascade add_foreign_key "issue_metrics", "issues", on_delete: :cascade
add_foreign_key "label_priorities", "labels", on_delete: :cascade add_foreign_key "label_priorities", "labels", on_delete: :cascade
......
...@@ -52,14 +52,14 @@ describe Ci::CreatePipelineService, services: true do ...@@ -52,14 +52,14 @@ describe Ci::CreatePipelineService, services: true do
previous_pipeline = pipeline_on_previous_commit previous_pipeline = pipeline_on_previous_commit
expect(pipeline.reload) expect(pipeline.reload)
.to have_attributes(status: 'pending', auto_canceled_by: nil) .to have_attributes(status: 'pending', auto_canceled_by_id: nil)
end end
it 'auto cancel pending non-HEAD pipelines' do it 'auto cancel pending non-HEAD pipelines' do
pending_pipeline = pipeline_on_previous_commit pending_pipeline = pipeline_on_previous_commit
pipeline pipeline
expect(pending_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by: pipeline.id) expect(pending_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
end end
it 'does not cancel running outdated pipelines' do it 'does not cancel running outdated pipelines' do
...@@ -67,7 +67,7 @@ describe Ci::CreatePipelineService, services: true do ...@@ -67,7 +67,7 @@ describe Ci::CreatePipelineService, services: true do
running_pipeline.run running_pipeline.run
execute_service execute_service
expect(running_pipeline.reload).to have_attributes(status: 'running', auto_canceled_by: nil) expect(running_pipeline.reload).to have_attributes(status: 'running', auto_canceled_by_id: nil)
end end
it 'cancel created outdated pipelines' do it 'cancel created outdated pipelines' do
...@@ -75,7 +75,7 @@ describe Ci::CreatePipelineService, services: true do ...@@ -75,7 +75,7 @@ describe Ci::CreatePipelineService, services: true do
created_pipeline.update(status: 'created') created_pipeline.update(status: 'created')
pipeline pipeline
expect(created_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by: pipeline.id) expect(created_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
end end
it 'does not cancel pipelines from the other branches' do it 'does not cancel pipelines from the other branches' do
...@@ -85,7 +85,7 @@ describe Ci::CreatePipelineService, services: true do ...@@ -85,7 +85,7 @@ describe Ci::CreatePipelineService, services: true do
) )
pipeline pipeline
expect(pending_pipeline.reload).to have_attributes(status: 'pending', auto_canceled_by: nil) expect(pending_pipeline.reload).to have_attributes(status: 'pending', auto_canceled_by_id: nil)
end end
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