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> <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>