manageiq: SystemStackError (infinite loop) with check_compliance

How to reproduce:

  1. Create a compliance policy with an action of check_compliance.
  2. Assign that policy to a VM
  3. Run check_compliance on that VM (can be done in Rails console or via a schedule or anything)

What happens:

MIQ(MiqGenericWorker::Runner#get_message_via_drb) Message id: [10000103363811], MiqWorker id: [10000000112678], Zone: [default], Role: [], Server: [], MiqTask id: [], Ident: [generic], Target id: [], Instance id: [], Task id: [], Command: [Compliance.check_compliance], Timeout: [600], Priority: [100], State: [dequeue], Deliver On: [], Data: [], Args: [["ManageIQ::Providers::Azure::CloudManager::Vm", 10000000000662], {}], Dequeued in: [48.478148] seconds
[----] I, [2020-07-31T14:01:03.133868 #17037:3fd068432010]  INFO -- : MIQ(MiqQueue#deliver) Message id: [10000103363811], Delivering...
[----] I, [2020-07-31T14:01:03.145557 #16073:3ff862432020]  INFO -- : MIQ(Compliance.check_compliance) Checking compliance...

** THOUSANDS OF THESE "Checking compliance..." LINES **

[----] I, [2020-07-31T14:01:37.260131 #17037:3fd068432010]  INFO -- : MIQ(Compliance.check_compliance) Checking compliance...
[----] I, [2020-07-31T14:01:37.283983 #17037:3fd068432010]  INFO -- : Deleting worker record for MiqGenericWorker, id 10000000112678
/Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:809:in `quote_column_name': stack level too deep (SystemStackError)
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:729:in `visit_Arel_Attributes_Attribute'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:15:in `visit'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:664:in `visit_Arel_Nodes_Equality'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:15:in `visit'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:822:in `block in inject_join'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:820:in `each'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:820:in `each_with_index'
	from /Users/jfrey/.gem/ruby/2.6.5/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:820:in `each'
	 ... 8524 levels...
	from /Users/jfrey/dev/manageiq/app/models/miq_worker/runner.rb:253:in `do_work_loop'
	from /Users/jfrey/dev/manageiq/app/models/miq_worker/runner.rb:113:in `run'
	from /Users/jfrey/dev/manageiq/app/models/miq_worker/runner.rb:95:in `start'
	from /Users/jfrey/dev/manageiq/lib/workers/bin/run_single_worker.rb:113:in `<main>'

Code analysis:

Compliance.check_compliance(target) =>
^  MiqPolicy.enforce_policy(target, "vm_compliance_check") =>
|  MiqAction.invoke_actions(target) =>
|  MiqAction#action_check_compliance ---\
\---------------------------------------/

@gtanzillo Please review

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 19 (19 by maintainers)

Commits related to this issue

Most upvoted comments

@lfu Please take a look