pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Gerhard Hintermayer <g.hintermayer@inode.at>
To: Bruce Momjian <pgman@candle.pha.pa.us>
Subject: Re: [INTERFACES] libpgtcl modifications
Date: Wed, 14 Aug 2002 08:04:35 +0200
Message-ID: <3D59F2F3.1030904@inode.at> (raw)
References: <200208140543.g7E5hIi02545@candle.pha.pa.us>

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




view thread (13+ messages)  latest in thread

Message-ID: <3D59F2F3.1030904@inode.at>
Permalink:  ../3D59F2F3.1030904@inode.at/
Also on:    postgresql.org/message-id/3D59F2F3.1030904@inode.at

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: g.hintermayer@inode.at, pgman@candle.pha.pa.us
  Subject: Re: [INTERFACES] libpgtcl modifications
  In-Reply-To: <3D59F2F3.1030904@inode.at>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox