|
[
Permalink
| « Hide
]
Mark Rotteveel added a comment - 26/Mar/20 11:47 AM
Fixed by copying the mapping configuration on first connection specific change, and using the copy for the remainder of the connection.
Hi Mark!
This is a serious issue. It should be backported to 3.x and 4.x series. Thank you! It is only serious if you actually modify the transaction mapping using FirebirdConnection.setTransactionParameters (or FBManagedConnection.setTransactionParameters). This only concerns modification of transaction configuration (so the DPB mapping of a transaction isolation level), and I think that is hardly ever done. I only found it by inspecting the code. As at that time I couldn't find a simple fix, I left it as is.
However, now I fixed it, the fix turns out to be relatively small, so I'll backport. Backported to 3.0.9 and 4.0.1
Hi!
Thank you fot the backport. (PS: How the hell people not use setTransactionParameters? How do they set/change R/W, RC/CONCURRENCY, REC_VERSION, WAIT/NO_WAIT mode on the transaction?) Hi Attila, I guess most will use the defaults, or use the available connection properties to specify the transaction configuration on connect instead of later.
And READ COMMITTED vs CONCURRENCY can be handled through setting the isolation level, READ vs WRITE through setReadOnly. To be clear, this problem only affected setTransactionParameters(int, int[]) and setTransactionParameters(int, TransactionParameterBuffer), and not setTransactionParameters(TransactionParameterBuffer). |