ofbiz-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adrian Crum (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OFBIZ-5534) Dirty reads from entity cache
Date Thu, 26 Jun 2014 05:03:24 GMT

    [ https://issues.apache.org/jira/browse/OFBIZ-5534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14044351#comment-14044351

Adrian Crum commented on OFBIZ-5534:

"...is to detect that a transaction is active, and disable all cache reads..."

I might be missing something, but it seems to me this effectively disables the cache. Nearly
every service call is wrapped in a transaction, and screen widgets wrap screen rendering in
a transaction - so pretty much everything OFBiz does is in a transaction.

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

View raw message