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