Thread: message type 0x50

message type 0x50

From
Alessandro GARDICH
Date:
Hi to all

i received "message type 0x50 arrived from server while idle" ...

RedHat Linux 9, postgres 7.3.4

the program is quite simple, a loop do UPDATE on a random entry on a
table. Server is without autocommit.

with setittimer and SIGALRM i do an explicit COMMIT every 10 seconds,
update loop have a random delay from 0 to 500 msec using usleep().

I have problems using SIGALRM and libpq (libpqxx exactly), does libpq
use select or other signal ???

trying to substiture usleep with a null for loop i obtain the massage
"type 0x50..."

some suggestion ???

P.S. on the table there is a trigger that execute an NOTIFY every
update, but only one is received also if many updates happen between
commits ... why ???


--
Alessandro GARDICH <gremlin@gremlin.it>
gremlin.it

Re: message type 0x50

From
Tom Lane
Date:
Alessandro GARDICH <gremlin@gremlin.it> writes:
> with setittimer and SIGALRM i do an explicit COMMIT every 10 seconds,
> update loop have a random delay from 0 to 500 msec using usleep().
> I have problems using SIGALRM and libpq (libpqxx exactly), does libpq
> use select or other signal ???

Are you trying to execute database operations from inside the SIGALRM
signal handler?  Perhaps these operations are interrupting something at
the main level?  libpq is not re-entrant for operations on a single
connection.

> P.S. on the table there is a trigger that execute an NOTIFY every
> update, but only one is received also if many updates happen between
> commits ... why ???

Because that's the way NOTIFY works.

            regards, tom lane