Thanks, Marco. I think cleaning up the FCGI sockets will be straightforward. I just need to figure out the best place to hook in to be able to do that.<br><br>Chris or Mike, after briefly looking over the code, it looks like the place to do this is to override the finish() method like this.<br>
<br>class FastCGISubprocess(Subprocess):<br><br> def finish(self, pid, sts):<br> #do FCGI Socket clean up here<br> ...<br> #do parent finish()<br> Subprocess.finish(self, pid, sts)<br><br>Does this seem like the right approach?<br>
<br>Thanks,<br><br>Roger<br><br><div class="gmail_quote">On Thu, Aug 13, 2009 at 4:02 PM, Marco Vittorini Orgeas <span dir="ltr"><marco@mavior.eu></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">Roger Hoover <roger.hoover@...> writes:<br>
<br>
> Hi Marco,The FCGI spawning functionality was added to the project before the<br>
dynamic configuration change support.<br>
<br>
>I think the issue may be that the FCGI socket is not getting cleaned up during<br>
the reload.<br>
<br>
</div>Indeed. When you replied I started alredy going a little deeper and the stdout<br>
ouput of svd when hitted by a SIGHUP is the following:<br>
<br>
2009-08-09 23:23:59,692 WARN received SIGHUP indicating restart request<br>
2009-08-09 23:23:59,713 CRIT Supervisor running as root (no user in config file)<br>
Traceback (most recent call last):<br>
File "/usr/bin/supervisord", line 8, in <module><br>
load_entry_point('supervisor==3.0a7', 'console_scripts', 'supervisord')()<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor/<br>
supervisord.py",<br>
line 368, in main<br>
go(options)<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor/<br>
supervisord.py",<br>
line 378, in go<br>
d.main()<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor/<br>
supervisord.py",<br>
line 91, in main<br>
self.run()<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor/<br>
supervisord.py",<br>
line 99, in run<br>
self.add_process_group(config)<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor/<br>
supervisord.py",<br>
line 131, in add_process_group<br>
config.after_setuid()<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor<br>
/options.py",<br>
line 1639, in after_setuid<br>
self.socket_manager.prepare_socket()<br>
File<br>
"/usr/lib/python2.5/site-packages/supervisor-3.0a7-py2.5.egg/supervisor/<br>
socket_manager.py",<br>
line 38, in prepare_socket<br>
self.socket.bind(self.socket_config.addr())<br>
File "<string>", line 1, in bind<br>
self.socket.bind(self.socket_config.addr())<br>
File "<string>", line 1, in bind<br>
socket.error: (98, 'Address already in use')<br>
<br>
Last line clearly shows that the socket should be cleaned before try to re-bind<br>
to the same address.<br>
<br>
I already start to look at the code,but I should study all the structure and<br>
that could take time and you should probably tackle it faster I think...<br>
<br>
This issue could be in some way related to this<br>
<a href="http://plope.org/software/collector/253" target="_blank">http://plope.org/software/collector/253</a><br>
even tough It speaks about "http<br>
servers" that I'm not aware of in svd so far...<br>
<br>
thank you for the informations,<br>
<font color="#888888"><br>
Marco<br>
</font><div><div></div><div class="h5"><br>
<br>
<br>
_______________________________________________<br>
Supervisor-users mailing list<br>
<a href="mailto:Supervisor-users@lists.supervisord.org">Supervisor-users@lists.supervisord.org</a><br>
<a href="http://lists.supervisord.org/mailman/listinfo/supervisor-users" target="_blank">http://lists.supervisord.org/mailman/listinfo/supervisor-users</a><br>
</div></div></blockquote></div><br>