[ https://issues.apache.org/jira/browse/OFBIZ-5534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14044784#comment-14044784 ]
Adam Heath commented on OFBIZ-5534: ----------------------------------- Well, to do what you would need, would be rather difficult(I think). Here's what would have to happen. * Allow any pre-existing cached results to be returned. * Allow new values to be stored into the cache. * Any values modified during a transaction place a 'whiteout' entry * Whiteout entries will prevent reading of cached items that match. * Whiteout entries will prevent storing of items that match into the cache. * Whiteout entries will clear the cache at the end of the transaction. Altho, maybe not so difficult. The changes I have I did entirely last night. > Dirty reads from entity cache > ----------------------------- > > Key: OFBIZ-5534 > URL: https://issues.apache.org/jira/browse/OFBIZ-5534 > Project: OFBiz > Issue Type: Bug > Components: framework > Affects Versions: Release Branch 11.04, SVN trunk, Release Branch 12.04, > Release Branch 13.07 > Reporter: Jacopo Cappellato > Assignee: Adam Heath > Attachments: unittest-dirtyreadsfromcache.patch > > > Even if database transaction isolation level is set to "ReadCommitted", a > transaction can get uncommitted records from the entity cache, under certain > circumstances. > Here is a test case: > 1) transaction T1 creates a record > 2) T1 calls findOne to retrieve it: the read will be successful (because T1 > can read data generated in T1 even if not committed) and the record will be > added to the cache > 3) T1 calls another service with requireNewTransaction set to true: this will > run the second service in a new transaction T2 > 4) T2 calls findOne to retrieve the record created by T1: if useCache is set > to false it should fail; if useCache is set to true it will succeed (getting > the record from cache, even if the data is not committed to the db) > The result in #4 is wrong because T2 should not see the uncommitted record > We should never add uncommitted records to the entity cache. -- This message was sent by Atlassian JIRA (v6.2#6252)