Hi Jakub,

On 21/05/10 16:19, Jakub Ouhrabka wrote:
can anyone tell me how this could happen, please?

database=# begin; update table set col = 100;
server closed the connection unexpectedly
       This probably means the server terminated abnormally
       before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
UPDATE 153
database=# ROLLBACK ;
WARNING:  there is no transaction in progress
ROLLBACK

I don't know anything about psql internals, but at a guess the sequence is this:
* 'begin' is sent to server
* Connection is dropped
* Connection is reset, but 'begin' is not resent
* Next statement (the update) is sent to the server, executes immediately
* Rollback gives error since there was no corresponding begin

Seems to be trivially easy to reproduce by connecting via psql, then killing that connection before issuing the 'begin; update' sequence (against postgres directly, no pgbouncer needed). If anything, it's an issue with psql settings? Maybe it should stop on connection drop rather than attempting reconnect and continuing with further statements.

Tom


--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to