diff options
author | Andres Freund <andres@anarazel.de> | 2015-02-03 23:25:47 +0100 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2015-02-03 23:25:47 +0100 |
commit | 2505ce0be0b686c5a0a5141e9d080e7fdc35988a (patch) | |
tree | 32291d2aaca4045b4e1949fd2e6b5d8d70e46c55 /src/backend/utils/misc/timeout.c | |
parent | d06995710bc7e347d39866c1793ae282498d65e0 (diff) | |
download | postgresql-2505ce0be0b686c5a0a5141e9d080e7fdc35988a.tar.gz postgresql-2505ce0be0b686c5a0a5141e9d080e7fdc35988a.zip |
Remove remnants of ImmediateInterruptOK handling.
Now that nothing sets ImmediateInterruptOK to true anymore, we can
remove all the supporting code.
Reviewed-By: Heikki Linnakangas
Diffstat (limited to 'src/backend/utils/misc/timeout.c')
-rw-r--r-- | src/backend/utils/misc/timeout.c | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/src/backend/utils/misc/timeout.c b/src/backend/utils/misc/timeout.c index ce4bc13ec3b..a7ec665f6c5 100644 --- a/src/backend/utils/misc/timeout.c +++ b/src/backend/utils/misc/timeout.c @@ -259,27 +259,12 @@ static void handle_sig_alarm(SIGNAL_ARGS) { int save_errno = errno; - bool save_ImmediateInterruptOK = ImmediateInterruptOK; /* - * We may be executing while ImmediateInterruptOK is true (e.g., when - * mainline is waiting for a lock). If SIGINT or similar arrives while - * this code is running, we'd lose control and perhaps leave our data - * structures in an inconsistent state. Disable immediate interrupts, and - * just to be real sure, bump the holdoff counter as well. (The reason - * for this belt-and-suspenders-too approach is to make sure that nothing - * bad happens if a timeout handler calls code that manipulates - * ImmediateInterruptOK.) - * - * Note: it's possible for a SIGINT to interrupt handle_sig_alarm before - * we manage to do this; the net effect would be as if the SIGALRM event - * had been silently lost. Therefore error recovery must include some - * action that will allow any lost interrupt to be rescheduled. Disabling - * some or all timeouts is sufficient, or if that's not appropriate, - * reschedule_timeouts() can be called. Also, the signal blocking hazard - * described below applies here too. + * Bump the holdoff counter, to make sure nothing we call will process + * interrupts directly. No timeout handler should do that, but these + * failures are hard to debug, so better be sure. */ - ImmediateInterruptOK = false; HOLD_INTERRUPTS(); /* @@ -332,24 +317,7 @@ handle_sig_alarm(SIGNAL_ARGS) } } - /* - * Re-allow query cancel, and then try to service any cancel request that - * arrived meanwhile (this might in particular include a cancel request - * fired by one of the timeout handlers). Since we are in a signal - * handler, we mustn't call ProcessInterrupts unless ImmediateInterruptOK - * is set; if it isn't, the cancel will happen at the next mainline - * CHECK_FOR_INTERRUPTS. - * - * Note: a longjmp from here is safe so far as our own data structures are - * concerned; but on platforms that block a signal before calling the - * handler and then un-block it on return, longjmping out of the signal - * handler leaves SIGALRM still blocked. Error cleanup is responsible for - * unblocking any blocked signals. - */ RESUME_INTERRUPTS(); - ImmediateInterruptOK = save_ImmediateInterruptOK; - if (save_ImmediateInterruptOK) - CHECK_FOR_INTERRUPTS(); errno = save_errno; } |