Oliver Jowett <oliver@opencloud.com> writes:
> Tom Lane wrote:
>> Well, the question is how long must the individual databases retain
>> state with which to answer "recover" requests.
> As I understand it, you don't need to keep state for committed txns,
I think that's clearly wrong:
TM --> DB: COMMIT PREPARED foo
DB does it and forgets gid foo
TM crashes and restarts
TM --> DB: what's the state of foo?
DB --> TM: go away, never heard of it
I suppose you could code the TM to treat this as meaning "it was
committed" but I think the folly of that is obvious.
> Probably the next question is, do we want a database-side timeout on how
> long prepared txns can stay alive before being summarily rolled back?
Yeah, there's another set of issues there. Personally I always thought
that 2PC was a fundamentally broken concept, because it's got so many
squirrelly cases where the guarantees you thought you were buying with
all this overhead vanish into thin air.
regards, tom lane