At 2012-12-29 14:23:45 -0500, [email protected] wrote:
>
> Regarding the actual comment, here's the wording that I'd use:
Sorry for nitpicking, but "we can't long jumps" made me cringe.
Here's a slightly more condensed version:
/*
* We can't use ereport(ERROR) here, because any longjmps
* in DoingCommandRead state run the risk of violating our
* protocol or the SSL protocol, by interrupting OpenSSL in
* the middle of changing its internal state.
*
* Currently, the only option is to promote ERROR to FATAL
* until we figure out a better way to handle errors in this
* state.
*/
Patch along these lines attached, which also removes trailing
whitespace from the original patch.
-- Abhijit
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 407c548..5b952d4 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -2908,6 +2908,17 @@ ProcessInterrupts(void)
DisableNotifyInterrupt();
DisableCatchupInterrupt();
pgstat_report_recovery_conflict(RecoveryConflictReason);
+
+ /*
+ * We can't use ereport(ERROR) here, because any longjmps
+ * in DoingCommandRead state run the risk of violating our
+ * protocol or the SSL protocol, by interrupting OpenSSL in
+ * the middle of changing its internal state.
+ *
+ * Currently, the only option is to promote ERROR to FATAL
+ * until we figure out a better way to handle errors in this
+ * state.
+ */
if (DoingCommandRead)
ereport(FATAL,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers