mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Fix Windows-specific race condition in syslogger. This could've been
the cause of the "could not write to log file: Bad file descriptor" errors reported at http://archives.postgresql.org//pgsql-general/2008-06/msg00193.php Backpatch to 8.3, the race condition was introduced by the CSV logging patch. Analysis and patch by Gurjeet Singh.
This commit is contained in:
@ -18,7 +18,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.49 2009/02/24 12:09:09 petere Exp $
|
* $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.50 2009/03/18 08:44:49 heikki Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -907,13 +907,14 @@ write_syslogger_file(const char *buffer, int count, int destination)
|
|||||||
if (destination == LOG_DESTINATION_CSVLOG && csvlogFile == NULL)
|
if (destination == LOG_DESTINATION_CSVLOG && csvlogFile == NULL)
|
||||||
open_csvlogfile();
|
open_csvlogfile();
|
||||||
|
|
||||||
logfile = destination == LOG_DESTINATION_CSVLOG ? csvlogFile : syslogFile;
|
#ifdef WIN32
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
rc = fwrite(buffer, 1, count, logfile);
|
|
||||||
#else
|
|
||||||
EnterCriticalSection(&sysfileSection);
|
EnterCriticalSection(&sysfileSection);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
logfile = destination == LOG_DESTINATION_CSVLOG ? csvlogFile : syslogFile;
|
||||||
rc = fwrite(buffer, 1, count, logfile);
|
rc = fwrite(buffer, 1, count, logfile);
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
LeaveCriticalSection(&sysfileSection);
|
LeaveCriticalSection(&sysfileSection);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user