Обсуждение: message type 0x50

Поиск
Список
Период
Сортировка

message type 0x50

От
Alessandro GARDICH
Дата:
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

От
Tom Lane
Дата:
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