Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id C8DF447601D for ; Sat, 17 Aug 2002 08:19:39 -0400 (EDT) Received: from candle.pha.pa.us (216-55-132-35.dsl.san-diego.abac.net [216.55.132.35]) by postgresql.org (Postfix) with ESMTP id 8A527475F59 for ; Sat, 17 Aug 2002 08:19:38 -0400 (EDT) Received: (from pgman@localhost) by candle.pha.pa.us (8.11.6/8.10.1) id g7HCJZk22900; Sat, 17 Aug 2002 08:19:35 -0400 (EDT) From: Bruce Momjian Message-Id: <200208171219.g7HCJZk22900@candle.pha.pa.us> Subject: Re: [INTERFACES] libpgtcl modifications In-Reply-To: <3D59F2F3.1030904@inode.at> To: Gerhard Hintermayer Date: Sat, 17 Aug 2002 08:19:35 -0400 (EDT) Cc: PostgreSQL-patches X-Mailer: ELM [version 2.4ME+ PL99 (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200208/333 X-Sequence-Number: 4869 Your patch has been added to the PostgreSQL unapplied patches list at: http://candle.pha.pa.us/cgi-bin/pgpatches I will try to apply it within the next 48 hours. --------------------------------------------------------------------------- Gerhard Hintermayer wrote: > Bruce Momjian wrote: > > Can I have some description of what this patch does? > > > > Unfortunately some of my postings seem to vanish in cyberspace ;-) > > What I have done for libpgtcl: > Everytime if I do PQconsumeInput (when the backend channel gets > readable) I check for the return value. (0 == error) and generate a > notification manually, e.g. fixed string connection_closed) and pass it to the > TCL event queue. The only other thing I had to do is to comment out removing > all pending events in PgStopNotifyEventSource whenever the connection was > unexpectedly closed (so the manually generated event will not be deleted). > > A broken backend connection triggers a notify event to the client (fixed > notification string "connection_closed") so proper action can be taken to switch > to another database server etc. Remember that this is event driven. If you have > applications, that have idle database connections most of the time, you'll get > immediate feedback of a dying server. Upon connection to the server issue a > pg_notify for notify event "connection_closed" and whenever the backend crashes > (which it does do in very very rare cases) you get an event driven recovery. (of > course the Tcl-Event loop has to be processed). Issuing a notification > "connection_closed" on a still working database could be used for switching to > another db-server (which I've actually impelemented right now). > > I did this not because we have crashing db-servers all the time, in fact we have > running pg for many years without any major problems in a production environment > (recipe and batch data for petfood production). > One reason was to get notifications to applications, that run permanently and > have a persistent db connection, in case the primary server should be changed > for whatever reason (network problems, server shutdown, maintenance etc.) > > Gerhard. > > PS: > >[ application/x-gunzip is not supported, skipping... ] > are you joking, which file format do you suggest for a patch ? > > > -- > Gerhard Hintermayer > http://www.inode.at/g.hintermayer > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073