On lör, 2012-04-28 at 11:12 -0400, Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
> > On fre, 2012-04-27 at 22:30 +0200, Andres Freund wrote:
> >> In the few cases where I investigated it TMs don't use transactions
> >> themselves (which I think is correct, they don't need them), so
> >> terminating any idle session - which the TM would appear as, as its
> >> not using txns - would leave prepared transactions in a limbo state
> >> till the database is up again, instead of waiting till all prepared
> >> transactions are either aborted or committed. It may also choose to
> >> coordinate to abort all transactions, but all that is hard if the
> >> database shuts you out.
>
> > This would lead to another shutdown mode, one that terminates idle
> > sessions unless they have prepared transactions. That could be useful.
>
> Huh? Prepared transactions aren't associated with sessions. At least
> not in a context using a TM --- the TM will be doing commits or
> rollbacks from a session different from the ones that ran the prepared
> transactions.
From what Andres wrote I gather that the TM would be using the same
session for preparing and committing.
In any case, if either the existing session of the TM is cut or it
cannot create a new connection, it will, after some time, have to give
up roll back the prepared transactions on the other servers. So some
kind of setting to not shut down if there are prepared transactions
pending could be useful. But this could probably be a separate GUC
setting or two instead of a shutdown mode (or two) of its own.