The Puppet Labs Issue Tracker has Moved:

This issue tracker is now in read-only archive mode and automatic ticket export has been disabled. Redmine users will need to create a new JIRA account to file tickets using See the following page for information on filing tickets with JIRA:

Bug #11306

puppet 2.7.8-1 bug under ruby 1.8.5/centos 5.7

Added by Alexey Wasilyev over 4 years ago. Updated over 4 years ago.

Status:ClosedStart date:12/09/2011
Priority:HighDue date:
Assignee:Nick Lewis% Done:


Target version:2.7.9
Affected Puppet version:2.7.8 Branch:

We've Moved!

Ticket tracking is now hosted in JIRA:


  • centos 5.7 with all updates.
  • puppet 2.7.8-1 from
  • ruby-1.8.5-19.el5_6.1

when i try to run puppetd -t i get “err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using ‘eval_generate: odd number of arguments for Hash” running ruby —debug /usr/sbin/puppetd -t show me, that error occurs in file /usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb, row 153:

return false unless resource.respond_to?(:eval_generate)
raise Puppet::DevError,"Depthfirst resources are not supported by eval_generate" if resource.depthfirst?
  made = resource.eval_generate.uniq
  return false if made.empty?
  made = Hash[]  ### HERE
rescue => detail
  puts detail.backtrace if Puppet[:trace]
  resource.err "Failed to generate additional resources using 'eval_generate: #{detail}"
  return false


#1 Updated by Stefan Schulte over 4 years ago

looks like puppet is using a language feature that is only available in ruby >=1.8.7

Can you please try to perform the following change to see if I’m correct

- made = Hash[]
+ made = Hash[ { |r| }.zip(made)]

#2 Updated by Alexey Wasilyev over 4 years ago

same thing: Exception `ArgumentError' at /usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:153 – odd number of arguments for Hash err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using ‘eval_generate: odd number of arguments for Hash

[awasilyev@adm-files ~]$ head -n 153 /usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb|tail -n 1

  made = Hash[ { |r| }.zip(made)]

#3 Updated by Phil Roffe over 4 years ago

I also have this same issue… RHEL 5.6, puppet-2.7.8-1.el5, ruby-1.8.5-5.el5_4.8

# rpm -qa | grep "ruby\|facter\|augeas\|puppet"

I also tried the patch to transaction.rb as described in comment #1 but to no avail – same error.

Downgrading puppet to puppet-2.7.6-2.el5 fixed the problem… maybe issues with ruby/puppet versions?

#4 Updated by James Turnbull over 4 years ago

  • Category set to plumbing
  • Status changed from Unreviewed to Needs Decision
  • Assignee set to Jason McKerr

Jason – looks like a possible regression in the 2.7.8 release.

#5 Updated by Marc DiBlasi over 4 years ago

I had the same issue with CentOS 5.5, ruby 1.8.5, Puppet 2.7.8-1. I upgraded to ruby 1.8.7 and it fixed the issue.

#6 Updated by Nick Fagerlund over 4 years ago

  • Description updated (diff)

#7 Updated by Josh Cooper over 4 years ago

  • Status changed from Needs Decision to Accepted
  • Assignee changed from Jason McKerr to Nick Lewis

#8 Updated by Nick Lewis over 4 years ago

  • Status changed from Accepted to Merged - Pending Release

A fix for this is merged to 2.7rc in commit:234afdf.

This 1.8.5-incompatible code wasn’t caught because of a long-standing bug in our tests that went unnoticed because of a bug in our CI setup. The former issue caused specs to fail before they even started running on 1.8.5, and the latter caused the run to still be reported as successful. We’ve fixed the former bug, but haven’t yet figured out a way to fix the latter (as it seems to be a bug in Ruby 1.8.5 + rspec). We will, however, be taking steps to ensure that such problems with our CI setup are more visible and caught sooner.

#9 Updated by Matthaus Owens over 4 years ago

  • Status changed from Merged - Pending Release to Closed
  • Target version changed from 2.7.x to 2.7.9

Released in puppet 2.7.9

Also available in: Atom PDF