Mailing List Archive

Signals, SA_RESTART, and 3rd-party module interoperability
Hi all,

I've run into an issue with how Apache and Microsoft's ODBC driver
interact with each other and have hit a wall as far as knowing what to
do next to decipher the situation.

Specifically, the issue is that when Apache is reloaded (apachectl
graceful), SIGUSR1 is sent without the SA_RESTART flag, meaning that
as far as I understand it, any read operations done by the ODBC driver
are stopped immediately without a chance of restarting. In an
environment where Apache loads PHP and PHP loads an extension that
uses said ODBC driver, this causes the ODBC driver to terminate any
open connections with the data source (typically SQL Server)
mid-request. The connection is closed, the PHP extension generates an
exception, the PHP script finishes executing after having raised an
exception, the HTTP request is completed, Apache kills off any idle
children, then restarts them.

Having gone back and forth with Microsoft about this behavior, I still
don't fully understand the process or what, if anything, is at fault
but I'm curious to see if anyone has any input as to whether the ODBC
driver is not following standard practices or if my only option is to
recompile Apache to set the flag.

The discussion I've had with Microsoft is available on GitHub under
Microsoft's 'msphpsql' repository, issue 1242.

https://github.com/microsoft/msphpsql/issues/1242

Any insight is appreciated.

Cheers

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org