The function of lock file named ".s.PGSQL.<port>.lock" on Linux?

The function of lock file named ".s.PGSQL.<port>.lock" on Linux?

am 03.08.2010 16:39:29 von xsun

When the psql server is started under Linux platform, in /tmp directory
there is a lock files named ".s.PGSQL..lock". So I want to know what
is the function of this lock file? And does the server work well without
this lock file?

Additionally, I know that the file ".s.PGSQL." is used as the unix
domain socket file. But the file ".s.PGSQL..lock" makes me still
pazzled. Could you explain that? Thanks.


Best wishes.



--
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin

Re: The function of lock file named ".s.PGSQL.<port>.lock" on Linux?

am 05.08.2010 18:41:14 von Tom Lane

"xsun" writes:
> When the psql server is started under Linux platform, in /tmp directory
> there is a lock files named ".s.PGSQL..lock". So I want to know what
> is the function of this lock file?

It prevents multiple postmasters from trying to use the same socket file.

> And does the server work well without
> this lock file?

No. (Well, it will run, but you have no protection against accidentally
starting another postmaster on the same port number.)

> Additionally, I know that the file ".s.PGSQL." is used as the unix
> domain socket file. But the file ".s.PGSQL..lock" makes me still
> pazzled. Could you explain that? Thanks.

We can't portably lock the socket file itself, so we make a separate
ordinary file for locking purposes.

regards, tom lane

--
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin

Re: The function of lock file named ".s.PGSQL.<port>.lock"on Linux?

am 11.08.2010 02:51:11 von Greg Smith

Tom Lane wrote:
> We can't portably lock the socket file itself, so we make a separate
> ordinary file for locking purposes.
>

It looks to me like the fact that the .lock file is created is only
documented in src/backend/utils/init/miscinit.c , and even there the
reason why (what you wrote above) isn't mentioned. Seems like noting
this file is created in the unix_socket_directory entry of the docs, and
the rationale for why in the source code, would make a useful
improvement. Anybody want to write a little documentation patch?

--
Greg Smith 2ndQuadrant US Baltimore, MD
PostgreSQL Training, Services and Support
greg@2ndQuadrant.com www.2ndQuadrant.us


--
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin

Re: The function of lock file named ".s.PGSQL.<port>.lock" on Linux?

am 11.08.2010 03:09:55 von Tom Lane

Greg Smith writes:
> Tom Lane wrote:
>> We can't portably lock the socket file itself, so we make a separate
>> ordinary file for locking purposes.

> It looks to me like the fact that the .lock file is created is only
> documented in src/backend/utils/init/miscinit.c , and even there the
> reason why (what you wrote above) isn't mentioned. Seems like noting
> this file is created in the unix_socket_directory entry of the docs, and
> the rationale for why in the source code, would make a useful
> improvement. Anybody want to write a little documentation patch?

FWIW, the discussion about that was here:
http://archives.postgresql.org/pgsql-hackers/2000-11/msg0130 6.php

and the subsequent commit was

2000-11-29 15:59 tgl

* configure, configure.in, src/backend/libpq/pqcomm.c,
src/backend/postmaster/postmaster.c, src/backend/tcop/postgres.c,
src/backend/utils/init/miscinit.c, src/backend/utils/misc/guc.c,
src/bin/pg_ctl/pg_ctl.sh, src/include/config.h.in,
src/include/miscadmin.h: Get rid of not-very-portable
fcntl(F_SETLK) mechanism for locking the Unix socket file, in favor
of having an ordinary lockfile beside the socket file. Clean up a
few robustness problems in the lockfile code. If postmaster is
going to reject a connection request based on database state, it
will now tell you so before authentication exchange not after. (Of
course, a failure after is still possible if conditions change
meanwhile, but this makes life easier for a yet-to-be-written
pg_ping utility.)

(The pgsql-committers messages were pretty useless back then, so I won't
point you to that archive.)

regards, tom lane

--
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin