[infinispan-issues] [JBoss JIRA] (ISPN-1583) AbstractDelegatingAdvancedCache with(ClassLoader), withFlags(Flag...) logic is broken

Paul Ferraro (Created) (JIRA) jira-events at lists.jboss.org
Wed Nov 30 14:53:47 EST 2011


AbstractDelegatingAdvancedCache with(ClassLoader), withFlags(Flag...) logic is broken
-------------------------------------------------------------------------------------

                 Key: ISPN-1583
                 URL: https://issues.jboss.org/browse/ISPN-1583
             Project: Infinispan
          Issue Type: Bug
          Components: Core API
    Affects Versions: 5.1.0.BETA5
            Reporter: Paul Ferraro
            Assignee: Manik Surtani
            Priority: Critical


When the withFlags(...) logic was modified to use a DecoratedCache instead of thread-local storage, any caches already decorated with the AbstractDelegatingAdvancedCache(...) broke.

Take the following code:
AdvancedCache<K, V> baseCache;
AdvancedCache<K, V> customCache = new AbstractDelegatingAdvancedCache<K, V>(baseCache) {
  public void clear() {
     // custom clear logic
  }
};

customCache.withFlags(Flag.CACHE_MODE_LOCAL).clear();

In the above statement, the flag is not applied.
The call to withFlags(...) returns a reference to customCache, and the reference to DecoratedCache containing the flags is lost to garbage collection.

In the case of with(ClassLoader) we have the opposite problem.

customCache.with(customClassLoader).clear();

In the above statement, the native clear() method is invoked instead of my custom clear() method. with(ClassLoader) returns a reference to DecoratedCache.  The clear() method then operates on baseCache, instead of decoratedCache.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the infinispan-issues mailing list