summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRydkin Maxim <maks.rydkin@gmail.com>2017-03-18 14:46:56 +0300
committerRydkin Maxim <maks.rydkin@gmail.com>2017-04-04 21:11:24 +0300
commita4d08e6babbbdbd44267aebdcccd2cc2c63e48ed (patch)
tree689d13927396e8af3eee7abd2fd663ee2688a410
parent40f67c1da84379e293db14b61dc7390bc4d0a4c4 (diff)
downloadgitlab-ce-a4d08e6babbbdbd44267aebdcccd2cc2c63e48ed.tar.gz
rename `auto_canceled_by` and add foreign key
-rw-r--r--app/models/ci/pipeline.rb2
-rw-r--r--app/services/ci/create_pipeline_service.rb2
-rw-r--r--db/migrate/20170312114329_add_auto_canceled_by_id_to_pipeline.rb (renamed from db/migrate/20170312114329_add_auto_canceled_by_to_pipeline.rb)14
-rw-r--r--db/schema.rb19
-rw-r--r--spec/services/ci/create_pipeline_service_spec.rb10
5 files changed, 28 insertions, 19 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 49dec770096..5e88ba0c170 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -7,7 +7,9 @@ module Ci
belongs_to :project
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 :builds, foreign_key: :commit_id
has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id
diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb
index 2f5ffddb12e..f944c869922 100644
--- a/app/services/ci/create_pipeline_service.rb
+++ b/app/services/ci/create_pipeline_service.rb
@@ -69,7 +69,7 @@ module Ci
Gitlab::OptimisticLocking.retry_lock(auto_cancelable_pipelines) do |cancelables|
cancelables.find_each do |cancelable|
cancelable.cancel_running
- cancelable.update_attributes(auto_canceled_by: pipeline.id)
+ cancelable.update_attributes(auto_canceled_by_id: pipeline.id)
end
end
end
diff --git a/db/migrate/20170312114329_add_auto_canceled_by_to_pipeline.rb b/db/migrate/20170312114329_add_auto_canceled_by_id_to_pipeline.rb
index 344b83fa253..5549a4199b2 100644
--- a/db/migrate/20170312114329_add_auto_canceled_by_to_pipeline.rb
+++ b/db/migrate/20170312114329_add_auto_canceled_by_id_to_pipeline.rb
@@ -1,7 +1,7 @@
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
-class AddAutoCanceledByToPipeline < ActiveRecord::Migration
+class AddAutoCanceledByIdToPipeline < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime.
@@ -21,9 +21,15 @@ class AddAutoCanceledByToPipeline < ActiveRecord::Migration
#
# To disable transactions uncomment the following line and remove these
# comments:
- # disable_ddl_transaction!
+ disable_ddl_transaction!
- def change
- add_column :ci_commits, :auto_canceled_by, :integer
+ def up
+ 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
diff --git a/db/schema.rb b/db/schema.rb
index 3ec5b08ac40..9481250e81d 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -61,7 +61,6 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.boolean "shared_runners_enabled", default: true, null: false
t.integer "max_artifacts_size", default: 100, null: false
t.string "runners_registration_token"
- t.integer "max_pages_size", default: 100, null: false
t.boolean "require_two_factor_authentication", default: false
t.integer "two_factor_grace_period", default: 48
t.boolean "metrics_enabled", default: false
@@ -99,17 +98,18 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.text "help_page_text_html"
t.text "shared_runners_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_bitmaps_enabled", default: true, 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_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.string "plantuml_url"
t.boolean "plantuml_enabled"
+ t.integer "max_pages_size", default: 100, null: false
t.integer "terminal_max_session_time", default: 0, null: false
t.string "default_artifacts_expire_in", default: "0", null: false
t.integer "unique_ips_limit_per_user"
@@ -251,7 +251,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.integer "duration"
t.integer "user_id"
t.integer "lock_version"
- t.integer "auto_canceled_by"
+ t.integer "auto_canceled_by_id"
end
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
t.string "avatar"
t.boolean "share_with_group_lock", default: false
t.integer "visibility_level", default: 20, null: false
- t.datetime "deleted_at"
t.boolean "request_access_enabled", default: false, null: false
- t.text "description_html"
+ t.datetime "deleted_at"
t.boolean "lfs_enabled"
+ t.text "description_html"
t.integer "parent_id"
end
@@ -920,8 +920,8 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.boolean "lfs_enabled"
t.text "description_html"
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.boolean "printing_merge_request_link_enabled", default: true, null: false
end
add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree
@@ -1241,10 +1241,10 @@ ActiveRecord::Schema.define(version: 20170402231018) do
t.boolean "hide_project_limit", default: false
t.string "unlock_token"
t.datetime "otp_grace_period_started_at"
- t.string "incoming_email_token"
t.boolean "ldap_email", default: false, null: false
t.boolean "external", default: false
t.string "organization"
+ t.string "incoming_email_token"
t.boolean "authorized_projects_populated"
t.boolean "ghost"
t.boolean "notified_of_own_activity"
@@ -1299,6 +1299,7 @@ ActiveRecord::Schema.define(version: 20170402231018) do
add_foreign_key "boards", "projects"
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 "issue_metrics", "issues", on_delete: :cascade
add_foreign_key "label_priorities", "labels", on_delete: :cascade
diff --git a/spec/services/ci/create_pipeline_service_spec.rb b/spec/services/ci/create_pipeline_service_spec.rb
index a61c17c66f1..4c23a371484 100644
--- a/spec/services/ci/create_pipeline_service_spec.rb
+++ b/spec/services/ci/create_pipeline_service_spec.rb
@@ -52,14 +52,14 @@ describe Ci::CreatePipelineService, services: true do
previous_pipeline = pipeline_on_previous_commit
expect(pipeline.reload)
- .to have_attributes(status: 'pending', auto_canceled_by: nil)
+ .to have_attributes(status: 'pending', auto_canceled_by_id: nil)
end
it 'auto cancel pending non-HEAD pipelines' do
pending_pipeline = pipeline_on_previous_commit
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
it 'does not cancel running outdated pipelines' do
@@ -67,7 +67,7 @@ describe Ci::CreatePipelineService, services: true do
running_pipeline.run
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
it 'cancel created outdated pipelines' do
@@ -75,7 +75,7 @@ describe Ci::CreatePipelineService, services: true do
created_pipeline.update(status: 'created')
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
it 'does not cancel pipelines from the other branches' do
@@ -85,7 +85,7 @@ describe Ci::CreatePipelineService, services: true do
)
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