Subject Re: [firebird-support] CommitRetaining question
Author Helen Borrie
At 07:17 AM 8/10/2005 +0000, you wrote:
>If I have an application that makes a CommitRetaining while the user
>edits/saves the record, and makes a hard Commit when the form is
>closed, but one day the application crashes after the CommitRetaining
>but before the hard Commit, what happens to the transaction?

No work is lost but the transaction remains interesting as long as the
server thinks the transaction still exists.

>Will it ever be garbage collected?

Yes, eventually. The server will eventually be informed that the
connection is dead and the transaction status will be converted to rolled back.

>Would it have any impact on the OIT or OAT?

It will affect OAT until the server realises it's dead and rolls it
back. Then, like any rolled back read-write transaction, it remains
interesting (affects OIT) until the garbage collection is able to change
its status and release it for garbage collection. At that point, it
becomes no longer interesting (has no further effect on the OIT), even if
the associated dead record versions are still waiting to be cleaned up in
the next GC roundup or a sweep.