Received: from corvette.mascari.com (dhcp160176144.columbus.rr.com [24.160.176.144]) by hub.org (8.10.1/8.10.1) with ESMTP id e68CuGW40842 for ; Sat, 8 Jul 2000 08:56:21 -0400 (EDT) Received: from mascari.com (ferrari.mascari.com [192.168.2.1]) by corvette.mascari.com (8.9.3/8.9.3) with ESMTP id IAA07025; Sat, 8 Jul 2000 08:54:35 -0400 Message-ID: <39672498.140BBC13@mascari.com> Date: Sat, 08 Jul 2000 08:54:48 -0400 From: Mike Mascari Organization: Mascari Development Inc X-Mailer: Mozilla 4.72 [en] (X11; U; Linux 2.2.5-15 i586) X-Accept-Language: en MIME-Version: 1.0 To: Alfred Perlstein CC: Jan Wieck , PostgreSQL HACKERS Subject: Re: fcntl(SETLK) [was Re: 2nd update on TOAST] References: <13925.963010847@sss.pgh.pa.us> <200007081115.NAA30848@hot.jw.home> <20000708055138.D25571@fw.wintelcom.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Archive-Number: 200007/495 Alfred Perlstein wrote: > > * Jan Wieck [000708 05:47] wrote: > > Tom Lane wrote: > > > > > > Bruce and I were just talking by phone about this, and we realized that > > > there is a completely different approach to making that decision: if you > > > want to know whether there's an old postmaster connected to a socket > > > file, try to connect to the old postmaster! In other words, pretend to > > > be a client and see if your connection attempt is answered. (You don't > > > have to try to log in, just see if you get a connection.) This might > > > also answer Peter's concern about socket files that belong to > > > non-Postgres programs, although I doubt that's really a big issue. > > > > > > There are some potential pitfalls here, like what if the old postmaster > > > is there but overloaded? But on the whole it seems like it might be > > > a cleaner answer than fooling around with lockfiles, and certainly safer > > > than relying on fcntl(SETLK) to work on a socket file. Comments anyone? > > > > Like it. > > my $pgsocket = "/tmp/.s.PGSQL.5432"; > > # try to connect to the postmaster > socket(SOCK, PF_UNIX, SOCK_STREAM, 0) > or die "unable to create unix domain socket: $!"; > > connect(SOCK, sockaddr_un($pgsocket)) > and errexit("postmaster is running you must shut it down"); > > oh yeah... :) > > -Alfred I don't get this. Isn't there a race condition here? Just curious, Mike Mascari