As a Puppet user, you can run into the following error.
~$ puppet agent -t
Info: Retrieving plugin
Info: Loading facts in /etc/puppet/modules/firewall/lib/facter/iptables_persistent_version.rb
Info: Loading facts in /etc/puppet/modules/firewall/lib/facter/ip6tables_version.rb
Info: Loading facts in /etc/puppet/modules/firewall/lib/facter/iptables_version.rb
Info: Loading facts in /etc/puppet/modules/vmwaretools/lib/facter/vmwaretools_version.rb
Info: Loading facts in /etc/puppet/modules/postgresql/lib/facter/postgres_default_version.rb
Info: Loading facts in /etc/puppet/modules/concat/lib/facter/concat_basedir.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/root_home.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/pe_version.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/puppet_vardir.rb
Info: Loading facts in /var/lib/puppet/lib/facter/iptables_persistent_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/root_home.rb
Info: Loading facts in /var/lib/puppet/lib/facter/ip6tables_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/vmwaretools_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/pe_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/postgres_default_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/iptables_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/concat_basedir.rb
Info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: stack level too deep on node hostname.tld
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
The error Error 400 on SERVER: stack level too deep on node can be caused by many things. Most likely cause appears to be this bug report : Puppet master fails with ‘stack level too deep’ error when storeconfigs = true with rails stack 3.1.0 .
The proposed patch seems to work in our case.
--- resource.rb.old 2012-07-24 12:56:33.558553439 -0500
+++ resource.rb 2012-07-24 12:57:19.697566347 -0500
@@ -84,7 +84,11 @@
end
def [](param)
- super || parameter(param)
+ if param == 'id'
+ super
+ else
+ super || parameter(param)
+ end
end
# Make sure this resource is equivalent to the provided Parser resource.
The file is /usr/lib/ruby/site_ruby/1.8/puppet/rails/resource.rb. Edit to file according to the patch above and restart your Puppet Master. Additionally, check which version your activerecord gem is.
~$ gem list | grep activerecord
activerecord (3.0.11, 3.0.10)
Make sure only version 3.0.10 is installed.
~$ gem install activerecord -v 3.0.10
If a new gem is installed, restart the Puppetmaster as well.