]
Tristan Tarrant updated ISPN-6477:
----------------------------------
Status: Resolved (was: Pull Request Sent)
Fix Version/s: 9.0.0.Final
Resolution: Done
Security tests always log a warning during cache manager shutdown
-----------------------------------------------------------------
Key: ISPN-6477
URL:
https://issues.jboss.org/browse/ISPN-6477
Project: Infinispan
Issue Type: Bug
Components: Security, Test Suite - Core
Affects Versions: 8.2.1.Final
Reporter: Dan Berindei
Assignee: Dan Berindei
Priority: Minor
Fix For: 9.0.0.Alpha1, 9.0.0.Final
The problem is that {{TestingUtil.killCacheManagers()}} first stops each cache
explicitly, and then {{DefaultCacheManager.stop()}} fails because it can't access the
global ACL cache to perform a security check:
{noformat}
17:07:00,613 WARN (testng-ExecutionAuthorizationTest:[]) [TestingUtil] Problems killing
cache manager
org.infinispan.manager.DefaultCacheManager@4e83a98@Address:ExecutionAuthorizationTest-NodeB-14717
org.infinispan.IllegalLifecycleStateException: ISPN000323: ___acl_cache is in
'TERMINATED' state and so it does not accept new invocations. Either restart it or
recreate the cache container.
at org.infinispan.cache.impl.SimpleCacheImpl.getDataContainer(SimpleCacheImpl.java:1044)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.cache.impl.SimpleCacheImpl.computeIfAbsentInternal(SimpleCacheImpl.java:1116)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.cache.impl.StatsCollectingCache.computeIfAbsentInternal(StatsCollectingCache.java:270)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at org.infinispan.cache.impl.SimpleCacheImpl.computeIfAbsent(SimpleCacheImpl.java:1111)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.security.impl.AuthorizationHelper.checkSubjectPermissionAndRole(AuthorizationHelper.java:107)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.security.impl.AuthorizationHelper.checkPermission(AuthorizationHelper.java:76)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.security.impl.AuthorizationManagerImpl.checkPermission(AuthorizationManagerImpl.java:42)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.security.impl.SecureCacheImpl.getComponentRegistry(SecureCacheImpl.java:336)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at
org.infinispan.manager.DefaultCacheManager.unregisterCacheMBean(DefaultCacheManager.java:714)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at org.infinispan.manager.DefaultCacheManager.terminate(DefaultCacheManager.java:671)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at org.infinispan.manager.DefaultCacheManager.stopCaches(DefaultCacheManager.java:708)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at org.infinispan.manager.DefaultCacheManager.stop(DefaultCacheManager.java:688)
~[infinispan-core.jar:9.0.0-SNAPSHOT]
at org.infinispan.test.TestingUtil.killCacheManagers(TestingUtil.java:673)
[infinispan-core-tests.jar:9.0.0-SNAPSHOT]
at org.infinispan.test.TestingUtil.killCacheManagers(TestingUtil.java:656)
[infinispan-core-tests.jar:9.0.0-SNAPSHOT]
at org.infinispan.test.TestingUtil.killCacheManagers(TestingUtil.java:652)
[infinispan-core-tests.jar:9.0.0-SNAPSHOT]
at
org.infinispan.test.MultipleCacheManagersTest.destroy(MultipleCacheManagersTest.java:87)
[infinispan-core-tests.jar:9.0.0-SNAPSHOT]
{noformat}
{{DefaultCacheManager.stop()}} could check a cache's status before trying to
unregister it from JMX, avoiding the security check when the cache is already
{{TERMINATED}}.
{{DefaultCacheManager.unregisterCacheMBean()}} could also extract the cache's
component registry from the global component registry and avoid the security check, since
{{DefaultCacheManager.stop()}} already performed a security check.