
> Well, the question is how long must the individual databases retain
> state with which to answer "recover" requests.  I don't like "forever",
> so I'm proposing that there should be an explicit command to say "you
> can forget about this gid".

I think it would be ok to forget the gid after:
	1. the same TX manager session sends the next statement (maybe only BEGIN?)
	2. the TX manager session is explicitly disconnected (do we know the difference
		to an aborted connection ?)

> 
> Note that this is only really necessary because of Heikki's choice to
> make the API work in terms of a user-assigned GID.

This was not an arbitrary choice, but is required by most/all TX managers :-(
I agree that it would be cleaner for the tx manager to keep such a map.
Maybe the idea was for the gid's to be human readable since human intervention 
is rarely but still required with 2PC, especially in the case where the tx manager 
is unavailable/unrecoverable. 

Andreas

Thu, 7 Oct 2004 10:26:39 +0200
"Zeugswetter Andreas DAZ SD" <ZeugswetterA@spardat.at>
Re: Two-phase commit
On Thu, 7 Oct 2004, Zeugswetter Andreas DAZ SD wrote:

>> Note that this is only really necessary because of Heikki's choice to
>> make the API work in terms of a user-assigned GID.
>
> This was not an arbitrary choice, but is required by most/all TX managers :-(
> I agree that it would be cleaner for the tx manager to keep such a map.
> Maybe the idea was for the gid's to be human readable since human intervention
> is rarely but still required with 2PC, especially in the case where the tx manager
> is unavailable/unrecoverable.

Actually, I think the reason is the following scenario:

1. TM tells DB to prepare for commit
2. DB connection dies after sending the message, but before the TM gets a 
reply.
3. The TM now has no way to know if the transaction got prepared or not.

With a TM assigned transaction id, it works like this:

1. TM tells DB to prepare for commit with transaction id 1234
2. DB connection dies after sending the message, but before the TM gets a 
reply.
3. TM reconnects, and asks the DB if the transaction 1234 is prepared or 
not.

- Heikki

Thu, 7 Oct 2004 13:57:23 +0300 (EEST)
Heikki Linnakangas <hlinnaka@iki.fi>
Re: Two-phase commit