Issue Details (XML | Word | Printable)

Key: JDBC-353
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Mark Rotteveel
Reporter: Mark Rotteveel
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Jaybird JCA/JDBC Driver

FBManagedConnectionFactory.tryCompleteInLimboTransaction doesn't work with recent Firebird 3 builds

Created: 07/May/14 06:00 PM   Updated: 30/Dec/14 12:00 PM
Component/s: JCA layer
Affects Version/s: Jaybird 2.2, Jaybird 2.2.1, Jaybird 2.2.2, Jaybird 2.2.3, Jaybird 2.2.4, Jaybird 2.2.5
Fix Version/s: Jaybird 2.2.6, Jaybird 3.0.0


 Description  « Hide
FBManagedConnectionFactory.tryCompleteInLimboTransaction doesn't work with recent Firebird 3 builds as it attempts to delete a record from RDB$TRANSACTIONS which is no longer allowed due to system table protection.

The deletion seems to be a form of house keeping and is technically unnecessary. However the current implementation of FBManagedConnection.recover is not very efficient if a large number of records are kept on file.

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Mark Rotteveel added a comment - 18/Nov/14 09:12 PM
Committed change that for Firebird 2.0 and higher will try to locate the transaction by the serialized Xid value. Deleting the transaction record will only be done in Firebird 2.5 and earlier.

Tested this on Firebird 3 and it works, still need to test on 2.1 and 2.5.

I am unsure of the performance implications. For Firebird 3.0 it will be better than the alternative of having to scan all records client side.

Mark Rotteveel added a comment - 30/Nov/14 09:40 AM
Tested on 2.5, in Jaybird 2.2 the transaction wasn't set when deleting the record. Fixed.

Mark Rotteveel added a comment - 30/Nov/14 11:44 AM
Tested on Firebird 2.1, test passes.