Project

General

Profile

Actions

Bug #16996

closed

eager_load in PuppetclassesController makes Classes view unusable

Added by Martin Schurz over 7 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
Performance
Target version:
Difficulty:
trivial
Triaged:
Fixed in Releases:
Found in Releases:

Description

Hi,

at first I have to say this bug might only appear when you have many environments and hostgroups. What we have, is around 1400 Classes, 70 Environments and 600 Hostgroups.

In our installation it is not possible to open the Classes view, because the ruby process will eat all the memory and then crash the server. We were able to track this down to the controller, which eager loads all the depending elements. In our case this results in a 800k rows resultset. When this is converted to ActiveRecord objects it takes a long time and uses a lot (>16GB) of memory.

In app/controllers/puppetclasses_controller.rb:

  def index
    eager_load_tables = [:config_group_classes, :class_params, :environments,
                         :hostgroups]
    @puppetclasses = resource_base_search_and_page(eager_load_tables)
    @hostgroups_authorizer = Authorizer.new(User.current, :collection => HostgroupClass.where(:puppetclass_id => @puppetclasses.map(&:id)).uniq.pluck(:hostgroup_id))
  end

Removing the eager loading solves all of our problems and makes the view work again (and really fast too).

Actions #1

Updated by The Foreman Bot over 7 years ago

  • Status changed from New to Ready For Testing
  • Pull request https://github.com/theforeman/foreman/pull/3951 added
Actions #2

Updated by Anonymous over 7 years ago

  • Status changed from Ready For Testing to Closed
  • % Done changed from 0 to 100
Actions #3

Updated by Dominic Cleal over 7 years ago

  • translation missing: en.field_release set to 203
Actions #4

Updated by Tomer Brisker over 7 years ago

  • Bugzilla link set to 1393773
Actions

Also available in: Atom PDF