2014-04-03
| ||
11:41 | • Ticket [56b42d99c1] Auto-enlistment in ambient transaction does not use the transaction isolation level status still Closed with 3 other changes artifact: 00fd834dc6 user: anonymous | |
2014-04-02
| ||
02:09 | Add support for mapping transaction isolation levels to their legacy default values. Pursuant to [56b42d99c1]. check-in: 919d687064 user: mistachkin tags: trunk | |
2014-03-30
| ||
01:51 | • Ticket [56b42d99c1] Auto-enlistment in ambient transaction does not use the transaction isolation level status still Closed with 3 other changes artifact: fe428eb33b user: mistachkin | |
01:19 | Add support for mapping transaction isolation levels to their legacy default values. Pursuant to [56b42d99c1]. check-in: 79365bcaed user: mistachkin tags: isolationLevels | |
2014-03-28
| ||
22:01 | • Ticket [56b42d99c1] Auto-enlistment in ambient transaction does not use the transaction isolation level status still Closed with 3 other changes artifact: 1f8a8ff754 user: mistachkin | |
20:02 | • Ticket [56b42d99c1]: 3 changes artifact: 8ba69750c7 user: anonymous | |
2013-12-23
| ||
14:48 | • Closed ticket [56b42d99c1]. artifact: f06085f9ff user: mistachkin | |
2013-12-20
| ||
17:03 | • Ticket [56b42d99c1]: 3 changes artifact: 07fc2d8ef9 user: mistachkin | |
17:02 | Use the current isolation level when enlisting into an existing transaction. Fix for [56b42d99c1]. check-in: f89efea9e9 user: mistachkin tags: trunk | |
16:59 | • Pending ticket [56b42d99c1]: Auto-enlistment in ambient transaction does not use the transaction isolation level plus 3 other changes artifact: 9a1470c755 user: mistachkin | |
2013-12-19
| ||
06:38 | Add test for ticket [56b42d99c1]. Minor style fixes. check-in: c91f525f5a user: mistachkin tags: tkt-56b42d99c1 | |
02:16 | • Fixed ticket [56b42d99c1]: Auto-enlistment in ambient transaction does not use the transaction isolation level plus 3 other changes artifact: f94f3d9179 user: mistachkin | |
02:14 | Use the current isolation level when enlisting into an existing transaction. Fix for [56b42d99c1]. Still needs tests. check-in: 4f050c73ff user: mistachkin tags: tkt-56b42d99c1 | |
00:42 | • Ticket [56b42d99c1] Auto-enlistment in ambient transaction does not use the transaction isolation level status still Open with 7 other changes artifact: b8000b1ea7 user: mistachkin | |
2013-12-18
| ||
20:59 | • New ticket [56b42d99c1]. artifact: 2e059bc3da user: anonymous | |
Ticket Hash: | 56b42d99c18456d55e769fd2663ef7a75129c46b | ||
Title: | Auto-enlistment in ambient transaction does not use the transaction isolation level | ||
Status: | Closed | Type: | Code_Defect |
Severity: | Important | Priority: | Blocker |
Subsystem: | Enlistment | Resolution: | Fixed |
Last Modified: | 2014-04-03 11:41:34 | ||
Version Found In: | 1.0.89.0 |
User Comments: | ||||
anonymous added on 2013-12-18 20:59:53:
We are using TransactionScope to control transactions, and SQLite connections correctly enlists in the ambient transaction if there is one at connection opening time. However, the SQLite transaction itself is not started using the isolation level of the ambient transaction. Instead it uses the default isolation level configured for the connection. Given that it is a default, and that there is already a controlling transaction with an isolation level specified, I think it would be better if the latter was used, thereby avoiding having to control isolation level for each connection individually. mistachkin added on 2013-12-19 02:16:52: A prototype fix for this is checked-in [4f050c73ff] on the "tkt-56b42d99c1" branch. Could you please try this fix in your environment, see if it resolves the issue, and report back? In Fossil, to update to that branch, the following command may be used: fossil update tkt-56b42d99c1 mistachkin added on 2013-12-20 16:59:54: Ticket is pending closure waiting for a response from the originator. mistachkin added on 2013-12-20 17:03:29: Fix merged to trunk via check-in [f89efea9e9]. anonymous added on 2014-03-28 20:02:06: (Assuming that I'm correct in my belief that SQLite only allows for ReadUncommitted and Serializable...) This change broke my code. I use a Data Access Layer interface to generalize across several data access providers. I specify Snapshot isolation in my next layer, which SQLite does not support, and now throws "isolationLevel". I guess it was using the connection default of Serializable before, but now it's failing if the Transaction enlisted doesn't match. Is there a more robust resolution that can avoid such leaks in my abstraction layer? mistachkin added on 2014-03-28 22:01:25: I'll look into it; however, throwing an exception for an unsupported isolation level seems like a reasonable thing to do? mistachkin added on 2014-03-30 01:51:38: I've made some changes on the [/info/isolationLevels] branch that add a new connection flag named "MapIsolationLevels". When this connection flag is used, one of the known transaction isolation levels will be used when enlisting into an existing transaction. Could you please test these changes in your environment and let me know if they work for you? In order to make use of these changes, you will need to add the following to your connection string: Flags=MapIsolationLevels; anonymous added on 2014-04-03 11:41:34: This seems like a good resolution to me. Thank you. I would not be setting this flag in my environment, so the old behavior is expected and should work great. |