[
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)