1
0
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:
Thomas Munro 2025-03-19 16:58:06 +13:00
parent d7e40845f9
commit 873c0fd678

View File

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