Hello, At Tue, 16 May 2017 12:45:39 -0400, Tom Lane <t...@sss.pgh.pa.us> wrote in <22556.1494953...@sss.pgh.pa.us> > Robert Haas <robertmh...@gmail.com> writes: > > Concretely, I think we should replace the abort_cleanup_incomplete > > flag from my previous patch with a changing_xact_state flag and set > > that flag around all transaction state changes, clearing it when such > > changes have succeeded. On error, the flag remains set, so we know > > that the state of that connection is unknown and that we must close it > > (killing outer transaction levels as needed). > > > Thoughts? > > Sounds plausible.
I think that the current issue is the usability of the current connection. Even if any other command should fail, we can continue using the connection if ABORT TRANSACTION succeeds. Failure of ABORT immediately means that the connection is no longer available. If this discuttion is reasonable, changing_xact_state might be too-much. By the way if an fdw connection is stalled amid do_sql_command waiting a result, a cancel request doesn't work (in other words pgsql_xact_callback is not called) since EINTR is just ignored in libpq. Maybe we should teach libpq to error out with EINTR with some additional reasons. PQsetEINTRcallback() or something? regards, -- Kyotaro Horiguchi NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers