Search Postgresql Archives

Re: Questions regarding notify processing.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the reply Tom. See comments below:

On Thursday 24 February 2005 12:06 pm, Tom Lane saith:
> Terry Lee Tucker <terry@xxxxxxxx> writes:
> > All this works great except for certain cases where one of the notify
> > messages, the one I'm really interested in, gets spooled, queued, or
> > something and is not delivered until I send another notification, after
> > the fact, from another client; then, I finally get the message delivered
> > along with the one I just sent.
>
> What PG version is this?  Some of what you mention sounds a bit like old
> bugs, but not enough to be sure.  Also, are you using SSL?
I never remember this until after I've sent the message. Here it is:
rnd=# select version ();
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 7.4.6 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 
20030502 (Red Hat Linux 3.2.3-49)

>
> AFAIK the only gotcha on the server side in current code is that it
> won't send notify messages while you are within a transaction; so if you
> are using BEGIN/COMMIT that could be the source of the issue.

The message is being sent inside a transaction by an after update trigger that 
updates values in another table.

>
> Looking at the source for PQconsumeInput, I note that depending on the
> kernel behavior it may not read all available data; so you might try
> turning that call into a loop
> 	while (PQconsumeInput(conn) > 0)
> 	   /* loop */ ;
I will give this a try.

> Ordinarily this is not necessary because if the socket remains
> read-ready you should get another callback right away anyway.  But
> perhaps the X toolkit is doing something weird that suppresses
> repeated callbacks.
>
> > I tried calling CheckForNotifies() from the interface code after the
> > save operation, but then, after two back to back updates, or sometimes
> > just one, the PQsendQuery call hangs up. The only way to "unhang it"
> > is to issue a NOTIFY from another client, which allows PQsendQuery to
> > continue.
>
> That's just plain bizarre.  Can you get a stack trace to find out
> exactly where it's hung?  And what is the server process doing at
> the same time?

I will be happy to do this if you or someone else will tell me how to do it.

>
> 			regards, tom lane

Thank you for your help ;o)


---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux