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>
|
||||
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…
x
Reference in New Issue
Block a user