[ https://issues.apache.org/jira/browse/IGNITE-3955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Semen Boikov reassigned IGNITE-3955: ------------------------------------ Assignee: Semen Boikov > IgniteCache.invokeAll returns empty result set in ATOMIC cache > -------------------------------------------------------------- > > Key: IGNITE-3955 > URL: https://issues.apache.org/jira/browse/IGNITE-3955 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 1.7 > Reporter: Pavel Tupitsyn > Assignee: Semen Boikov > Fix For: 1.8 > > > When entry processor is invoked from multiple threads, result set is > sometimes empty. > This happens with ATOMIC cache, but not with TRANSACTIONAL. > To reproduce, paste the following into GridCacheAbstractFullApiSelfTest.java: > {code} > public void testInvokeAllMultithreaded() throws Exception { > final IgniteCache<String, Integer> cache = jcache(); > final int threadCnt = 4; > final int cnt = 90000; > final Set<String> keys = Collections.singleton("myKey"); > GridTestUtils.runMultiThreaded(new Runnable() { > @Override public void run() { > for (int i = 0; i < cnt; i++) { > final Map<String, EntryProcessorResult<Integer>> res = > cache.invokeAll(keys, new CacheEntryProcessor<String, > Integer, Integer>() { > @Override > public Integer process(MutableEntry<String, > Integer> entry, > Object... objects) throws > EntryProcessorException { > Integer val = entry.getValue(); > if (val == null) > val = 0; > val++; > entry.setValue(val); > return val; > } > }); > assertEquals(1, res.size()); > } > } > }, threadCnt, "testInvokeAllMultithreaded"); > assertEquals(cnt*threadCnt, (int)cache.get("myKey")); > } > {code} > Run this test as part of GridCacheAtomicFullApiSelfTest.java. -- This message was sent by Atlassian JIRA (v6.3.4#6332)