Magnus Hagander wrote:
Hmm, PGSemaphoreUnlock() actually ignore this error, only log that it
No. It does ereport(FATAL) which terminates the backend.
Oh, now I see, sorry :) Indeed on this one connection we receive
exception "FATAL: could not unlock semaphore", after that rollback
failed because of IO error during write to connection and that was
caused by "Connection reset by peer: socket write error".
As I mentioned previously after it happens others connections
were hung on update operations. What is strange we cannot reproduce this
problem on Linux. But we can do this on Windows. What another
information should we provide?
Doesn't the postmaster restart all other backends due to the FATAL error?
Are you saying that you can no longer make new connections to the server,
or is the problem coming from that the aplpication doesn't like that the
server kicked out all connections?
No, we are sure that he didn't do that. As I mentioned above one
connection was terminated, but other ones were hung on update
operations. In this state it was possible to create new connection from
PGAdmin and do some select and update operations. In addition I can say
that we use only read-commited transactions and all operations are based
on prepared statemens which are reused.
If you can produce a self-contained test-case, that would certainly make
debugging a lot easier. So if it's possible - but I realise that might not
be easy for a problem like this :-)
Our test case is our application, but unfortunately I cannot send it to
you. I will think about test case, but I need to find a time for writing
it :( I can reproduce error and provide all information you need from
PostgreSQL. Please instruct me what to do :)
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?