diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-01-19 22:08:47 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-01-19 22:08:47 +0000 |
commit | 6ce0ed2813ddcbb41a7199222fe0d2109fc5a5b4 (patch) | |
tree | 65e761d2289a6f4a88469fc7fdfc1dfcdfa03a90 /src/backend/utils/error/elog.c | |
parent | 75815c31009d84171d46bcaef603bcd0cecd4446 (diff) |
Make critical sections (elog->crash) and interrupt holdoff sections
into distinct concepts, per recent discussion on pghackers.
Diffstat (limited to 'src/backend/utils/error/elog.c')
-rw-r--r-- | src/backend/utils/error/elog.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 460a7175ce5..2bb6cd976cf 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.76 2001/01/14 05:08:16 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.77 2001/01/19 22:08:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -132,7 +132,7 @@ elog(int lev, const char *fmt, ...) int space_needed; int len; /* size of the prefix needed for timestamp and pid, if enabled */ - size_t timestamp_size; + size_t timestamp_size; if (lev <= DEBUG && Debugfile < 0) return; /* ignore debug msgs if noplace to send */ @@ -148,15 +148,25 @@ elog(int lev, const char *fmt, ...) } #else /* assume strerror() will cope gracefully with bogus errno values */ - errorstr = strerror(errno); + errorstr = strerror(errno); #endif - /* Convert initialization errors into fatal errors. - * This is probably redundant, because Warn_restart_ready won't - * be set anyway... - */ - if (lev == ERROR && IsInitProcessingMode()) - lev = FATAL; + if (lev == ERROR || lev == FATAL) + { + /* + * Convert initialization errors into fatal errors. + * This is probably redundant, because Warn_restart_ready won't + * be set anyway... + */ + if (IsInitProcessingMode()) + lev = FATAL; + /* + * If we are inside a critical section, all errors become STOP errors. + * See miscadmin.h. + */ + if (CritSectionCount > 0) + lev = STOP; + } /* choose message prefix and indent level */ switch (lev) |