Marek Laca created QPID-8554:
--------------------------------

             Summary: [Broker-J] Infinite loop in CachingSecurityToken class
                 Key: QPID-8554
                 URL: https://issues.apache.org/jira/browse/QPID-8554
             Project: Qpid
          Issue Type: Bug
          Components: Broker-J
            Reporter: Marek Laca


The CachingSecurityToken class is caching the authorization results. It can be 
utilized by multiple threads at the same time. Hence, it has to be multi-thread 
safe. The CachingSecurityToken::authorise could get stuck in an infinite loop 
when multiple threads try to update the local cache simultaneously.
Two threads can be in permanent conflict when each thread is trying to override 
changes of another thread.

{code:java}
AccessControlCache cache;
while((cache = CACHE_UPDATE.get(this)).getAccessControl() != 
ruleBasedAccessControl)
{
    CACHE_UPDATE.compareAndSet(this, cache, new 
AccessControlCache(ruleBasedAccessControl));
}
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to