Hi. Could you please share your reproducer example?
I added classes to repoduce the error. It also throws cache closed errors I am ok with it. But others. -- Alper Tekinalp Software Developer Evam Streaming Analytics Atatürk Mah. Turgut Özal Bulv. Gardenya 5 Plaza K:6 Ataşehir 34758 İSTANBUL Tel: +90 216 455 01 53 Fax: +90 216 455 01 54 www.evam.com.tr <http://www.evam.com>
/** * Created by alpert on 08/11/2016. */ public class Main { public static void main(String[] args) throws InterruptedException { IgniteThread t1 = new IgniteThread("1"); IgniteThread t2 = new IgniteThread("2"); t1.createCache(); t2.createCache(); t1.start(); t2.start(); t1.destroyCache(); Thread.sleep(100); t2.destroyCache(); System.exit(0); } }
import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.Ignition; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMemoryMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.CacheRebalanceMode; import org.apache.ignite.cache.CacheWriteSynchronizationMode; import org.apache.ignite.cache.query.QueryCursor; import org.apache.ignite.cache.query.ScanQuery; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.internal.processors.cache.CacheEntryImpl; import org.apache.ignite.lang.IgniteBiPredicate; /** * Created by alpert on 08/12/2016. */ public class IgniteThread extends Thread { private static String cacheName = "EXAMPLE"; Ignite start; public IgniteThread(String gridName) { IgniteConfiguration igniteConfiguration = new IgniteConfiguration(); igniteConfiguration.setGridName(gridName); start = Ignition.start(igniteConfiguration); setName(gridName); } public void run() { while (true) { ScanQuery<String, String> scanQuery = new ScanQuery<String, String>() .setLocal(true) .setFilter(new IgniteBiPredicate<String, String>() { @Override public boolean apply(String key, String p) { return key.equals(""); } }); IgniteCache<String, String> example = start.cache(cacheName); for(int partition : start.affinity(cacheName).primaryPartitions(start.cluster().localNode())) { scanQuery.setPartition(partition); try (QueryCursor cursor = example.query(scanQuery)) { for (Object p : cursor) { String value = (String) ((CacheEntryImpl) p).getValue(); System.out.println(value); } } catch (Exception e) { e.printStackTrace(); } } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } public void createCache() { CacheConfiguration configuration = new CacheConfiguration(); configuration.setAtomicityMode(CacheAtomicityMode.ATOMIC) .setCacheMode(CacheMode.PARTITIONED) .setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED) .setRebalanceMode(CacheRebalanceMode.SYNC) .setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC) .setRebalanceThrottle(100) .setRebalanceBatchSize(2*1024*1024) .setBackups(1) .setName(cacheName) .setEagerTtl(false); start.getOrCreateCache(configuration); } public void destroyCache() { start.destroyCache(cacheName); } }