Issue #1947 has been updated by nwp.

OK, I was wondering why there'd be quite so many connections open to be passed 
on to the child processes in the first place. It seems to me that each 
connection used during a catalog run is kept open until the 
http_pool.clear_http_instances is called at the end of the run. With 
keep_alive, they might get re-used, but without, a new one is created every 
time http_pool.http_instance is called, and they stack up in huge numbers.

This is, quite clearly, nuts.

I don't have a clear enough grasp of the structure of this thing to know where 
they should be being dumped yet, but it should be relatively simple for someone 
with a better grasp of the intended function of it to find somewhere to close 
the connections.

It wouldn't obviate the need for close-on-exec, but it would make the 
consequences of not having it (it does look like the HTTP and XMLRPC classes 
might make it awkward to get it set) far less painful.

I'd be very happy (understatement, see ;-) ) to try out patches for this issue 
if there were any... otherwise I'll just keep on fumbling around until I can 
get it to work.
----------------------------------------
Bug #1947: Puppet still leaks FDs on exec
http://projects.reductivelabs.com:80/issues/1947

Author: nwp
Status: Accepted
Priority: Normal
Assigned to: 
Category: exec
Target version: 
Complexity: Unknown
Affected version: 0.24.7
Keywords: 


Puppet still leaks FDs on exec.

This can be when restarting a "service" resource or running an "exec" resource; 
anything that uses util.rb's functions to actually do the exec.

The line "3.upto(256){|fd| IO::new(fd).close rescue nil}" (introduced in 0.24.6 
I believe) is not adequate; FDs numbered above 256 remain open. I now have 
hosts failing in the middle of puppet catalog runs due to running out of FDs. 
Looking at one of the services that gets regular puppet-controlled restarts, it 
has FDs 1-13, and 257->985 open. Restarting it manually makes the problem go 
away.

Actually knowing which FDs are in use (for communication with the puppetmaster 
in particular, but also anything else that I haven't yet noticed) and closing 
them would probably fix the problem completely; iterating over FDs in the hope 
that the system you are on doesn't happen to allow higher-numbered ones and 
hasn't been using them if it does, is not a good solution.


----------------------------------------
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://reductivelabs.com/redmine/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