diff options
author | Bruce Momjian <bruce@momjian.us> | 2004-04-11 00:54:45 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2004-04-11 00:54:45 +0000 |
commit | 3c4ab3f51d927a75c97b59db3c7041ae3e2fa0a5 (patch) | |
tree | c8e71abcb592e59d4029718faed85662a9993709 /src/backend/utils/error/elog.c | |
parent | 1934055cbe0b4ae29f6008154eb8b34a30c83816 (diff) | |
download | postgresql-3c4ab3f51d927a75c97b59db3c7041ae3e2fa0a5.tar.gz postgresql-3c4ab3f51d927a75c97b59db3c7041ae3e2fa0a5.zip |
Exit backend from SIGTERM or FATAL by simulating client EOF, rather than
calling proc_exit() directly. This should make SIGTERM more reliable.
Diffstat (limited to 'src/backend/utils/error/elog.c')
-rw-r--r-- | src/backend/utils/error/elog.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 96366333f06..e6f191d5df3 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.132 2004/04/05 03:02:06 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.133 2004/04/11 00:54:45 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -72,6 +72,8 @@ PGErrorVerbosity Log_error_verbosity = PGERROR_VERBOSE; char *Log_line_prefix = NULL; /* format for extra log line info */ unsigned int Log_destination; +bool in_fatal_exit = false; + #ifdef HAVE_SYSLOG char *Syslog_facility; /* openlog() parameters */ char *Syslog_ident; @@ -442,7 +444,12 @@ errfinish(int dummy,...) */ fflush(stdout); fflush(stderr); - proc_exit(proc_exit_inprogress || !IsUnderPostmaster); + + if (in_fatal_exit) + ereport(PANIC, (errmsg("fatal error during fatal exit, giving up"))); + + /* We will exit the backend by simulating a client EOF */ + in_fatal_exit = true; } /* |