Merge pull request #361 from abf/rosa-build:360-try_fix_counters
#360 try to fix mass build counters
This commit is contained in:
commit
3798409876
|
@ -13,7 +13,7 @@ class BuildList < ActiveRecord::Base
|
|||
belongs_to :builder, class_name: 'User'
|
||||
belongs_to :publisher, class_name: 'User'
|
||||
belongs_to :advisory
|
||||
belongs_to :mass_build, counter_cache: true
|
||||
belongs_to :mass_build, counter_cache: true, touch: true
|
||||
has_many :items, class_name: '::BuildList::Item', dependent: :destroy
|
||||
has_many :packages, class_name: '::BuildList::Package', dependent: :destroy
|
||||
has_many :source_packages, class_name: '::BuildList::Package', conditions: {package_type: 'source'}
|
||||
|
@ -142,21 +142,6 @@ class BuildList < ActiveRecord::Base
|
|||
|
||||
state_machine :status, initial: :waiting_for_response do
|
||||
|
||||
# WTF? around_transition -> infinite loop
|
||||
before_transition do |build_list, transition|
|
||||
status = HUMAN_STATUSES[build_list.status]
|
||||
if build_list.mass_build && MassBuild::COUNT_STATUSES.include?(status)
|
||||
MassBuild.decrement_counter "#{status.to_s}_count", build_list.mass_build_id
|
||||
end
|
||||
end
|
||||
|
||||
after_transition do |build_list, transition|
|
||||
status = HUMAN_STATUSES[build_list.status]
|
||||
if build_list.mass_build && MassBuild::COUNT_STATUSES.include?(status)
|
||||
MassBuild.increment_counter "#{status.to_s}_count", build_list.mass_build_id
|
||||
end
|
||||
end
|
||||
|
||||
after_transition(on: :place_build) do |build_list, transition|
|
||||
build_list.add_job_to_abf_worker_queue if build_list.external_nodes.blank?
|
||||
end
|
||||
|
|
|
@ -87,6 +87,15 @@ class MassBuild < ActiveRecord::Base
|
|||
end
|
||||
later :publish_test_failed_builds, queue: :clone_build
|
||||
|
||||
COUNT_STATUSES.each do |stat|
|
||||
stat_count = "#{stat}_count"
|
||||
define_method stat_count do
|
||||
Rails.cache.fetch([self, "cached_#{stat_count}"], expires_in: 5.minutes) do
|
||||
build_lists.where(status: BuildList::HUMAN_STATUSES.key(stat)).count
|
||||
end
|
||||
end if stat != :build_lists
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def generate_list(status)
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
%td.min_width_120
|
||||
- MassBuild::COUNT_STATUSES.each do |status|
|
||||
= link_to t("layout.build_lists.statuses.#{status}") + ": ", build_lists_path(filter: {mass_build_id: mass_build.id, ownership: 'everything'}.merge(status != :build_lists ? {status: BuildList.status_by_human(status)} : {}))
|
||||
= mass_build.read_attribute "#{status}_count"
|
||||
= mass_build.send "#{status}_count"
|
||||
.both
|
||||
-if mass_build.projects_list.present?
|
||||
=link_to_list @platform, mass_build, 'missed_projects_list'
|
||||
= mass_build.read_attribute 'missed_projects_count'
|
||||
= mass_build.send 'missed_projects_count'
|
||||
%td
|
||||
- if mass_build.projects_list.present?
|
||||
= link_to_list @platform, mass_build, 'projects_list'
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddMassBuildIndexToBuildList < ActiveRecord::Migration
|
||||
def change
|
||||
add_index :build_lists, [:mass_build_id, :status]
|
||||
end
|
||||
end
|
|
@ -0,0 +1,21 @@
|
|||
class RemoveCountersFromMassBuild < ActiveRecord::Migration
|
||||
def up
|
||||
remove_columns :mass_builds, :build_published_count,
|
||||
:build_pending_count,
|
||||
:build_started_count,
|
||||
:build_publish_count,
|
||||
:build_error_count,
|
||||
:success_count,
|
||||
:build_canceled_count
|
||||
end
|
||||
|
||||
def down
|
||||
add_column :mass_builds, :build_published_count, :integer, default: 0
|
||||
add_column :mass_builds, :build_pending_count, :integer, default: 0
|
||||
add_column :mass_builds, :build_started_count, :integer, default: 0
|
||||
add_column :mass_builds, :build_publish_count, :integer, default: 0
|
||||
add_column :mass_builds, :build_error_count, :integer, default: 0
|
||||
add_column :mass_builds, :success_count, :integer, default: 0
|
||||
add_column :mass_builds, :build_canceled_count, :integer, default: 0
|
||||
end
|
||||
end
|
10
db/schema.rb
10
db/schema.rb
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20140219191644) do
|
||||
ActiveRecord::Schema.define(:version => 20140224134012) do
|
||||
|
||||
create_table "activity_feeds", :force => true do |t|
|
||||
t.integer "user_id", :null => false
|
||||
|
@ -149,6 +149,7 @@ ActiveRecord::Schema.define(:version => 20140219191644) do
|
|||
add_index "build_lists", ["advisory_id"], :name => "index_build_lists_on_advisory_id"
|
||||
add_index "build_lists", ["arch_id"], :name => "index_build_lists_on_arch_id"
|
||||
add_index "build_lists", ["project_id", "save_to_repository_id", "build_for_platform_id", "arch_id"], :name => "maintainer_search_index"
|
||||
add_index "build_lists", ["mass_build_id", "status"], :name => "index_build_lists_on_mass_build_id_and_status"
|
||||
add_index "build_lists", ["project_id"], :name => "index_build_lists_on_project_id"
|
||||
|
||||
create_table "comments", :force => true do |t|
|
||||
|
@ -285,18 +286,11 @@ ActiveRecord::Schema.define(:version => 20140219191644) do
|
|||
t.integer "user_id"
|
||||
t.boolean "auto_publish", :default => false, :null => false
|
||||
t.integer "build_lists_count", :default => 0, :null => false
|
||||
t.integer "build_published_count", :default => 0, :null => false
|
||||
t.integer "build_pending_count", :default => 0, :null => false
|
||||
t.integer "build_started_count", :default => 0, :null => false
|
||||
t.integer "build_publish_count", :default => 0, :null => false
|
||||
t.integer "build_error_count", :default => 0, :null => false
|
||||
t.boolean "stop_build", :default => false, :null => false
|
||||
t.text "projects_list"
|
||||
t.integer "missed_projects_count", :default => 0, :null => false
|
||||
t.text "missed_projects_list"
|
||||
t.boolean "new_core", :default => true
|
||||
t.integer "success_count", :default => 0, :null => false
|
||||
t.integer "build_canceled_count", :default => 0, :null => false
|
||||
t.integer "save_to_platform_id", :null => false
|
||||
t.text "extra_repositories"
|
||||
t.text "extra_build_lists"
|
||||
|
|
Loading…
Reference in New Issue