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: [email protected]
For additional commands, e-mail: [email protected]