Issue #16327 has been updated by Daniel Pittman. Status changed from Accepted to In Topic Branch Pending Review Branch set to https://github.com/puppetlabs/puppet/pull/1145
This turns out to have been a combination of two bugs, one that prevented the YAML cache being enabled at all, and a second (deliberate) change that caused the order in which data was fetched from the master to change, triggering a bug because of the pervasive assumptions about state change from code flow in the indirector. Fixing both allows this to work: first, the YAML cache will behave as expected, allowing compilation to work while data to the (unreachable) inventory service will be discarded on error. The second allows the agent to carry on if that doesn't work when fetching node details, which allows it to get far enough to actually submit facts and compile, allowing a brand new, shiny node to actually work even if the inventory service was down. ---------------------------------------- Bug #16327: YAML facts terminus cache not configured as expected in Puppet 3.0.0, leading to unexpected failures https://projects.puppetlabs.com/issues/16327#change-71099 Author: Shane Madden Status: In Topic Branch Pending Review Priority: Normal Assignee: Category: indirector Target version: 3.0.0 Affected Puppet version: 3.0.0-rc5 Keywords: Branch: https://github.com/puppetlabs/puppet/pull/1145 The inventory_service fact terminus was created for bug #10289, to allow for the updating of facts in a central inventory service while avoiding the single point of failure behavior that occurs for the rest terminus when the inventory server is down or misbehaving. In 2.7.x, the failure is graceful, throwing a warning on the master that is attempting attempting to send facts to the terminus: warning: Could not upload facts for node.example.com to inventory service: Connection refused - connect(2) But in 3.0.0rc5, a failure occurs and the agent's run fails: Error: Could not retrieve facts for node.example.com: Connection refused - connect(2) /usr/lib/ruby/1.8/net/http.rb:560 /usr/lib/ruby/1.8/net/http.rb:560 /usr/lib/ruby/1.8/net/http.rb:560 /usr/lib/ruby/1.8/timeout.rb:67 /usr/lib/ruby/1.8/timeout.rb:101 /usr/lib/ruby/1.8/net/http.rb:560 /usr/lib/ruby/1.8/net/http.rb:553 /usr/lib/ruby/1.8/net/http.rb:542 /usr/lib/ruby/1.8/net/http.rb:1035 /usr/lib/ruby/1.8/net/http.rb:772 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/connection.rb:61 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/connection.rb:61 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/connection.rb:25 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:105 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:105 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:84 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:118 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:177 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/request.rb:216 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:177 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:112 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:191 /usr/lib/ruby/site_ruby/1.8/puppet/node.rb:87 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/node/plain.rb:17 /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:191 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:105 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:68 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:68 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick/rest.rb:24 /usr/lib/ruby/1.8/webrick/httpserver.rb:104 /usr/lib/ruby/1.8/webrick/httpserver.rb:65 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:36 /usr/lib/ruby/1.8/webrick/server.rb:173 /usr/lib/ruby/1.8/webrick/server.rb:173 /usr/lib/ruby/1.8/webrick/server.rb:162 /usr/lib/ruby/1.8/webrick/server.rb:162 /usr/lib/ruby/1.8/webrick/server.rb:95 /usr/lib/ruby/1.8/webrick/server.rb:92 /usr/lib/ruby/1.8/webrick/server.rb:92 /usr/lib/ruby/1.8/webrick/server.rb:23 /usr/lib/ruby/1.8/webrick/server.rb:82 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:33 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:32 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:32 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:32 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29 /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29 /usr/lib/ruby/site_ruby/1.8/puppet/network/server.rb:96 /usr/lib/ruby/site_ruby/1.8/puppet/network/server.rb:112 /usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:136 /usr/lib/ruby/site_ruby/1.8/puppet/application/master.rb:199 /usr/lib/ruby/site_ruby/1.8/puppet/application/master.rb:148 /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:342 /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:436 /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:342 /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:513 /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:342 /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:76 /usr/bin/puppet:10 Looks like the find method needs to get the same graceful handling treatment that the save method is getting in indirector/facts/inventory_service.rb. Thanks! -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
