You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Semen Boikov (JIRA)" <ji...@apache.org> on 2016/11/04 06:44:58 UTC

[jira] [Updated] (IGNITE-3955) IgniteCache.invokeAll returns empty result set in ATOMIC cache

     [ https://issues.apache.org/jira/browse/IGNITE-3955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Semen Boikov updated IGNITE-3955:
---------------------------------
    Assignee: Konstantin Dudkov  (was: 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: Konstantin Dudkov
>             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)