Issue #10909 has been updated by Daniel Pittman.

Josh Cooper wrote:
> > Working around these because a vendor reintroduced the bug briefly as part 
> > of a kernel update doesn't make that any wiser.
> 
> Just to be clear, implementing this change wouldn't have prevented the hang 
> from occurring. It would occur anytime Puppet performed a blocking read with 
> it's listener thread blocked in accept, so pretty much all the time.

That seems a radically different bug to the one found in 2.7.13, and 
reintroduced in the RedHat kernel, which was that select didn't work correctly 
for files on the proc virtual file system; the relationship with select and 
listen came about, as I understood it, because the Ruby C kernel would use 
select if, and only if, there were two active file handles - and that cropped 
up when listening on a network socket *and* reading files.

> While reviewing this issue, Jacob said that facter shouldn't be calling 
> IO.readlines, etc, generally speaking, and so this is why I filed it.

That seems odd, and it would have been very useful to include the rationale for 
that in this ticket.  After all, if we are making design decisions like "don't 
use standard file I/O in Facter" then we need to tell folks what they must do 
instead, and work out how to enforce that standard.  After all, if these 
methods shouldn't be used, having our users do so and break things is highly 
undesirable...
----------------------------------------
Bug #10909: Shell out when reading from /proc
https://projects.puppetlabs.com/issues/10909

Author: Josh Cooper
Status: Rejected
Priority: Normal
Assignee: 
Category: 
Target version: 
Keywords: 
Branch: 
Affected Facter version: 


There are many places in facter where it using ruby's IO.read or IO.readlines 
to read the contents of files in /proc. This is problematic, as it can cause 
ruby to block definitely. It is better to use:

<pre>
Facter::Util::Resolution.exec("/bin/cat #{uptime_file} 2>/dev/null")
</pre>

with an appropriate timeout. This issue was triggering 
https://support.puppetlabs.com/tickets/482 (though not the cause)


-- 
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.

Reply via email to