|
|
@ -209,11 +209,13 @@ |
|
|
|
<para> |
|
|
|
<para> |
|
|
|
Modules must remain interruptible by signals so that the server can |
|
|
|
Modules must remain interruptible by signals so that the server can |
|
|
|
correctly handle authentication timeouts and shutdown signals from |
|
|
|
correctly handle authentication timeouts and shutdown signals from |
|
|
|
<application>pg_ctl</application>. For example, a module receiving |
|
|
|
<application>pg_ctl</application>. For example, blocking calls on sockets |
|
|
|
<symbol>EINTR</symbol>/<symbol>EAGAIN</symbol> from a blocking call |
|
|
|
should generally be replaced with code that handles both socket events |
|
|
|
should call <function>CHECK_FOR_INTERRUPTS()</function> before retrying. |
|
|
|
and interrupts without races (see <function>WaitLatchOrSocket()</function>, |
|
|
|
The same should be done during any long-running loops. Failure to follow |
|
|
|
<function>WaitEventSetWait()</function>, et al), and long-running loops |
|
|
|
this guidance may result in unresponsive backend sessions. |
|
|
|
should periodically call <function>CHECK_FOR_INTERRUPTS()</function>. |
|
|
|
|
|
|
|
Failure to follow this guidance may result in unresponsive backend |
|
|
|
|
|
|
|
sessions. |
|
|
|
</para> |
|
|
|
</para> |
|
|
|
</listitem> |
|
|
|
</listitem> |
|
|
|
</varlistentry> |
|
|
|
</varlistentry> |
|
|
|