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
pull/207/head
Thomas Munro 6 months ago
parent d7e40845f9
commit 873c0fd678
  1. 12
      doc/src/sgml/oauth-validators.sgml

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

Loading…
Cancel
Save