Excerpts from Paul Nasrat's message of Tue Aug 17 06:40:42 -0700 2010: > The EC2 fact is completely broken at the moment: > > * Timeout::Error isn't caught by rescue (due to how it inherits) > * The issue of wrong open semantics outlined here, this is causing hidden > immediate failure > * The fact is going to cause a 2 second wait to every facter run > > Whilst the following patch fixes the first two, I'm not sure we want to take > the timeout hit, we also want to add tests as even simple ruby code can get > logic errors such as the open().
Paul, The third issue ( the timeout hit ) is currently somewhat systematic in Facter. That is, a number of fact files do computationally expensive things at load time to then generate facts. The EC2 fact is just the most flagrant of these. While it's obviously important that we fix the EC2 fact's behavior, I think we should also consider ways to mitigate this load-time cost. It seems that most of these files are generating facts in a way that mimics structured data: ec2_foo, ipaddress_eth0, sp_boot_mode, etc. This indicates that structured data might allow us to move the computations inside the fact so that they are executed lazily. Of course, structured data is a ways down the time line, and a 2 second delay in all Facter runs -- even if the EC2 fact is never called -- adversely affects Facter's apparent performance. Would it make sense to package the EC2 facts separately somehow? How else can we get rid of this performance hit? -- Rein Henrichs http://puppetlabs.com In most countries selling harmful things like drugs is punishable. Then howcome people can sell Microsoft software and go unpunished? (By [email protected], Hasse Skrifvars) -- You received this message because you are subscribed to the Google Groups "Puppet Developers" 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-dev?hl=en.
