Subject Re: [firebird-support] Limbo transactions?
Author Helen Borrie
At 11:15 AM 22/11/2007, Alexandre Benson Smith wrote:
>heineferreira wrote:
>> Hi
>>
>> What are Limbo transactions? Do I need to worry about them?
>
>Limbo transactions relates to teo-phase

two-phase

>commit protocol, they are transaction that are neither commited or rolled back in all databases, generally caused by broken connection.
>
>You should not care about it unless you use two-phase commit.
>
>Note, my explanation could not be 100% acurate since I never did a DML
>operations that spawns multiples databases.

To be clear, Firebird doesn't support "DML operations that SPAN multiple databases" [ DML can't SPAWN databases ;-) ]. It does support *transactions* that span multiple databases, that is, connect to multiple databases simultaneously and perform operations in each that retain the consistent state of each DB for the duration of the transaction. Two-phase commit is the mechanism by which the consistency of the participating databases is protected.

If you DO run multi-database transactions and you encounter limbo transaction errors then you do need to attend to them in each database, as they will leave the databases with entailed locks on records that will affect future transactions involving those records. There is a tool in the gfix utility for finding and resolving limbo transactions; the same options are also available through the Services API.

./heLen