Re: fcntl(SETLK) [was Re: 2nd update on TOAST]
От | Alfred Perlstein |
---|---|
Тема | Re: fcntl(SETLK) [was Re: 2nd update on TOAST] |
Дата | |
Msg-id | 20000708055138.D25571@fw.wintelcom.net обсуждение исходный текст |
Ответ на | Re: fcntl(SETLK) [was Re: 2nd update on TOAST] (JanWieck@t-online.de (Jan Wieck)) |
Список | pgsql-hackers |
* Jan Wieck <JanWieck@t-online.de> [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
В списке pgsql-hackers по дате отправления: