[ https://issues.apache.org/jira/browse/IGNITE-9128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Pereslegin updated IGNITE-9128: ------------------------------------- Description: Continuous query handlers don't clean up after the cache was stopped. Reproducer shows resource leak: {code:java} public class Reproducer extends GridCommonAbstractTest { /** */ private static final String CACHE1 = "cache1"; /** */ public void testCacheRecreate() throws Exception { IgniteEx node = startGrid(0); int hndCntr = 0; try { for (int i = 0; i < 100; i++) { IgniteCache<Integer, Integer> cache = node.createCache(CACHE1); cache.query(new ContinuousQuery<>().setLocalListener(evts -> {})); cache.destroy(); } for (Object locInfo : ((Map)U.field(node.context().continuous(), "locInfos")).values()) { GridContinuousHandler hnd = U.field(locInfo, "hnd"); if (CACHE1.equals(hnd.cacheName())) ++hndCntr; } assertEquals("No local handlers expected after cache was stopped.", 0, hndCntr); } finally { stopAllGrids(); } } } {code} Output: {noformat} junit.framework.AssertionFailedError: No local handlers expected after cache was stopped. Expected :0 Actual :100 {noformat} was: Continuous query handlers don't clean up after the cache was stopped. Reproducer shows resource leak: {code:java} public class Reproducer extends GridCommonAbstractTest { /** */ private static final String CACHE1 = "cache1"; /** */ public void testCacheRecreate() throws Exception { IgniteEx node = startGrid(0); int hndCntr = 0; try { for (int i = 0; i < 100; i++) { IgniteCache<Integer, Integer> cache = node.createCache(CACHE1); cache.query(new ContinuousQuery<>().setLocalListener(evts -> {})); cache.put(1, 1); cache.destroy(); } for (Object locInfo : ((Map)U.field(node.context().continuous(), "locInfos")).values()) { GridContinuousHandler hnd = U.field(locInfo, "hnd"); if (CACHE1.equals(hnd.cacheName())) ++hndCntr; } assertEquals("No local handlers expected after cache was stopped.", 0, hndCntr); } finally { stopAllGrids(); } } } {code} Output: {noformat} junit.framework.AssertionFailedError: No local handlers expected after cache was stopped. Expected :0 Actual :100 {noformat} > Continuous query handlers don't clean up after cache was stopped. > ----------------------------------------------------------------- > > Key: IGNITE-9128 > URL: https://issues.apache.org/jira/browse/IGNITE-9128 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 2.6 > Reporter: Pavel Pereslegin > Priority: Major > > Continuous query handlers don't clean up after the cache was stopped. > Reproducer shows resource leak: > {code:java} > public class Reproducer extends GridCommonAbstractTest { > /** */ > private static final String CACHE1 = "cache1"; > /** */ > public void testCacheRecreate() throws Exception { > IgniteEx node = startGrid(0); > int hndCntr = 0; > try { > for (int i = 0; i < 100; i++) { > IgniteCache<Integer, Integer> cache = > node.createCache(CACHE1); > cache.query(new ContinuousQuery<>().setLocalListener(evts -> > {})); > cache.destroy(); > } > for (Object locInfo : ((Map)U.field(node.context().continuous(), > "locInfos")).values()) { > GridContinuousHandler hnd = U.field(locInfo, "hnd"); > if (CACHE1.equals(hnd.cacheName())) > ++hndCntr; > } > assertEquals("No local handlers expected after cache was > stopped.", 0, hndCntr); > } > finally { > stopAllGrids(); > } > } > } > {code} > Output: > {noformat} > junit.framework.AssertionFailedError: No local handlers expected after cache > was stopped. > Expected :0 > Actual :100 > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)