mirror of
https://github.com/postgres/postgres.git
synced 2025-05-02 11:44:50 +03:00
oauth: Improve validator docs on interruptibility
Andres pointed out that EINTR handling is inadequate for real-world use cases. Direct module writers to our wait APIs instead. Author: Jacob Champion <jacob.champion@enterprisedb.com> Discussion: https://postgr.es/m/p4bd7mn6dxr2zdak74abocyltpfdxif4pxqzixqpxpetjwt34h%40qc6jgfmoddvq
This commit is contained in:
parent
d7e40845f9
commit
873c0fd678
@ -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>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user