>
> > > Bruce Momjian wrote:
> > >
> > > > OK, thanks to Tom Lane's many patches, I have query cancel working on my
> > > > machine. However, it is not working with Unix domain sockets. I get:
> > > >
> > > > Cannot send cancel request:
> > > > PQrequestCancel() -- couldn't send OOB data: errno=45
> > > > Operation not supported
> > > >
> > > > This is under BSDI 3.1.
> > > >
> > > > Do Unix Domain sockets support OOB(out-of-band) data?
> > > >
> > >
> > > Unix domain sockets don't support OOB (Stevens, Unix Network Programming).
> >
> > Yea, I found that too, late last night, Section 6.14, page 332.
> >
> > I basically need some way to 'signal' the backend of a cancellation
> > request. Polling the socket is not an option because it would impose
> > too great a performance penalty. Maybe async-io on a read(), but that
> > is not going to be very portable.
> >
> > I could pass the backend pid to the front end, and send a kill(SIG_URG)
> > to that pid on a cancel, but the frontend can be running as a different
> > user than the backend. Problem is, the only communcation channel is
> > that unix domain socket.
> >
> > We basically need some way to get the attention of the backend,
> > hopefully via some signal.
> >
> > Any ideas?
>
> Use TCP. On most modern systems (eg Linux ;-) ), TCP especially on the local
> machine is very efficient. Not quite as efficient as a Unix domain socket,
> but close enough that no one will notice.
>
> To investigate this, see Larry McVoy's wonderful lmbench suite...
We implemented Unix domain sockets for performance, and security. Hard
to beat a Unix domain socket's security. I need the SIB_URG signal.
--
Bruce Momjian | 830 Blythe Avenue
maillist@candle.pha.pa.us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)