ehcache/ehcache-shiro

EhcacheShiroManager leaks CacheManagers

nenko-tabakov opened this issue · 0 comments

Calling EhcacheShiroManager.init() followed by EhcacheShiroManager.setCacheManager will make the EhCache's CacheManager created by 'EhcacheShiroManager' unreachable. Consider the following test case:

EhcacheShiroManager ehcacheShiroManager = new EhcacheShiroManager();
ehcacheShiroManager.init();
CacheManager firstCacheManager = ehcacheShiroManager.getCacheManager();
Assert.assertNotNull(firstCacheManager);

ehcacheShiroManager.setCacheManager(cacheManager);
CacheManager secondCacheManager = ehcacheShiroManager.getCacheManager();
Assert.assertNotSame(firstCacheManager, secondCacheManager);
Assert.assertNotEquals(firstCacheManager, secondCacheManager);

ehcacheShiroManager.destroy();

Assert.assertEquals(Status.UNINITIALIZED, firstCacheManager.getStatus());
Assert.assertEquals(Status.UNINITIALIZED, secondCacheManager.getStatus());