clarify-fatal-error-in-conflict-resolution.diff
text/x-diff
Filename: clarify-fatal-error-in-conflict-resolution.diff
Type: text/x-diff
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/backend/tcop/postgres.c | 11 | 0 |
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),