From d7a1feba67c3b1fbe47a186a5749c47034966a38 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 26 Aug 2010 22:00:32 +0000 Subject: [PATCH] Document the existence of the socket lock file under unix_socket_directory, which is perhaps not a terribly good spot for it but there doesn't seem to be a better place. Also add a source-code comment pointing out a couple reasons for having a separate lock file. Per suggestion from Greg Smith. --- doc/src/sgml/config.sgml | 90 +++++++++++++++++++++++++++++----------------- src/backend/libpq/pqcomm.c | 7 +++- 2 files changed, 64 insertions(+), 33 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index e4783013ca..39be6243ca 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1,4 +1,4 @@ - + Server Configuration @@ -426,6 +426,20 @@ SET ENABLE_SEQSCAN TO OFF; /tmp, but can be changed at build time. This parameter can only be set at server start. + + + In addition to the socket file itself, which is named + .s.PGSQL.nnnn where + nnnn is the server's port number, an ordinary file + named .s.PGSQL.nnnn.lock will be + created in the unix_socket_directory directory. Neither + file should ever be removed manually. + + + + This parameter is irrelevant on Windows, which does not have + Unix-domain sockets. + @@ -445,6 +459,11 @@ SET ENABLE_SEQSCAN TO OFF; group of the server user. This parameter can only be set at server start. + + + This parameter is irrelevant on Windows, which does not have + Unix-domain sockets. + @@ -482,6 +501,11 @@ SET ENABLE_SEQSCAN TO OFF; This parameter can only be set at server start. + + + This parameter is irrelevant on Windows, which does not have + Unix-domain sockets. + @@ -523,18 +547,19 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the number of seconds before sending a keepalive packet on an otherwise idle - connection. A value of 0 uses the system default. This parameter is supported - only on systems that support the TCP_KEEPIDLE or TCP_KEEPALIVE - symbols, and on Windows; on other systems, it must be zero. This parameter is - ignored for connections made via a Unix-domain socket. - - - On Windows, a value of 0 will set this parameter to 2 hours, - since Windows does not provide a way to read the default value. - - + Specifies the number of seconds before sending a keepalive packet on + an otherwise idle connection. A value of 0 uses the system default. + This parameter is supported only on systems that support the + TCP_KEEPIDLE or TCP_KEEPALIVE symbols, and on + Windows; on other systems, it must be zero. This parameter is ignored + for connections made via a Unix-domain socket. + + + On Windows, a value of 0 will set this parameter to 2 hours, + since Windows does not provide a way to read the system default value. + + @@ -545,18 +570,19 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the number of seconds between sending keepalives on an otherwise idle - connection. A value of 0 uses the system default. This parameter is supported - only on systems that support the TCP_KEEPINTVL - symbol, and on Windows; on other systems, it must be zero. This parameter is - ignored for connections made via a Unix-domain socket. - - - On Windows, a value of 0 will set this parameter to 1 second, - since Windows does not provide a way to read the default value. - - + Specifies the number of seconds between sending keepalives on an + otherwise idle connection. A value of 0 uses the system default. + This parameter is supported only on systems that support the + TCP_KEEPINTVL symbol, and on Windows; on other systems, it + must be zero. This parameter is ignored for connections made via a + Unix-domain socket. + + + On Windows, a value of 0 will set this parameter to 1 second, + since Windows does not provide a way to read the system default value. + + @@ -568,16 +594,16 @@ SET ENABLE_SEQSCAN TO OFF; Specifies the number of keepalive packets to send on an otherwise idle - connection. A value of 0 uses the system default. This parameter is supported - only on systems that support the TCP_KEEPCNT - symbol; on other systems, it must be zero. This parameter is - ignored for connections made via a Unix-domain socket. - - - This parameter is not supported on Windows, and must be zero. - - + connection. A value of 0 uses the system default. This parameter is + supported only on systems that support the TCP_KEEPCNT + symbol; on other systems, it must be zero. This parameter is ignored + for connections made via a Unix-domain socket. + + + This parameter is not supported on Windows, and must be zero. + + diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 360524f50a..85350661ce 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -30,7 +30,7 @@ * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.212 2010/07/08 16:19:50 mha Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.212.2.1 2010/08/26 22:00:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -484,6 +484,11 @@ Lock_AF_UNIX(unsigned short portNumber, char *unixSocketName) /* * Grab an interlock file associated with the socket file. + * + * Note: there are two reasons for using a socket lock file, rather than + * trying to interlock directly on the socket itself. First, it's a lot + * more portable, and second, it lets us remove any pre-existing socket + * file without race conditions. */ CreateSocketLockFile(sock_path, true); -- 2.11.0