You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Bob Morley (JIRA)" <ji...@apache.org> on 2010/04/01 17:19:27 UTC

[jira] Updated: (OFBIZ-2882) EntityList cache clearing issues when removing generic entity via DelegatorImpl

     [ https://issues.apache.org/jira/browse/OFBIZ-2882?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bob Morley updated OFBIZ-2882:
------------------------------

    Attachment: OFBIZ-2882_EntityCacheListTest_V2.patch
                OFBIZ-2882_EntityCacheListFix_V2.patch

NOTE: I think this patch is pretty important.  I have re-packaged it and tested it again on Trunk, here are the details ...  Only apply the two V2 patch files!!!

This patch fixes a pretty serious caching issue.  I just applied to two patches to trunk and made a few modifications based on the current state of trunk.  Here are the changes:

a) The unit tester was making use of reflection to get at the cache (which was not exposed at the time of coding).  It turns out that there is a getCache on delegator that is now available so I removed the reflection code and used this.

b) The last assert on the unit test was assuming that the result of the cache (after clear would be null); I felt this was too close to the implementation so I eased this assert up to check for empty (as long as we do not have a cache hit on the removed entity we are ok)

The changes to the fix were:

a) Half of the fix was related to fixing EntityJoinOperator which was not properly checking the short circuit.  It appears Adam Heath has applied this fix so I removed it from this patch.

b) There was an additional "GenericValue.NULL" check that was written in the comments but not put into the patch file.  The new patch file has this in it.

As before, I ran with the unit test that exposes the failure and then ran again with the patch applied which causes the unit tester to pass.

> EntityList cache clearing issues when removing generic entity via DelegatorImpl
> -------------------------------------------------------------------------------
>
>                 Key: OFBIZ-2882
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-2882
>             Project: OFBiz
>          Issue Type: Bug
>          Components: framework
>    Affects Versions: SVN trunk
>            Reporter: Bob Morley
>            Assignee: Adam Heath
>            Priority: Critical
>         Attachments: OFBIZ-2882_EntityCacheListFix.patch, OFBIZ-2882_EntityCacheListFix_V2.patch, OFBIZ-2882_EntityCacheListTest.patch, OFBIZ-2882_EntityCacheListTest_V2.patch
>
>
> For more information refer to http://www.nabble.com/EntityList-cache-issues-...-to25179637.html
> Ran into some trouble when we turned out caching and started to dependent on the EntityList cache.  The two problems were:
> 1) When attempting to storeHook to the entityListCache or entityObjectCache via the Cache.remove method, the NEW entity was being passed into the OLD entity.  This caused condition matching (in the list cache) to sometimes fail if a matched entity no longer matches do to it being modified.
> 2) During the matching logic the EntityJoinOperator was incorrectly short circuiting.  It was always checking if the lhs/rhs condition was true and if so returning the short-circuit value.  A concrete example is as such -- (A is funny) && (B is funny).  The short-circuit value for this expression is "FALSE" which means that if the first expression is FALSE we short-circuit and return FALSE.  What was happening was "if (A is funny) then return FALSE" rather then "if (A is funny == FALSE) then return FALSE".
> I have a patch in the works for both of these issues and will include a unit tester that illustrates the problems (pre-patch) and passes successfully (post-patch).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.