You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Tupitsyn (JIRA)" <ji...@apache.org> on 2016/09/22 09:20:20 UTC

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

Pavel Tupitsyn created IGNITE-3955:
--------------------------------------

             Summary: 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
             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, Long> cache = (IgniteCache<String, Long>)(IgniteCache)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<Long>> res =
                        cache.invokeAll(keys, new PlatformDotNetEntityFrameworkIncreaseVersionProcessor());

                    assertEquals(1, res.size());
                }
            }
        }, threadCnt, "testInvokeAllMultithreaded");

        assertEquals(cnt*threadCnt, (long)cache.get("myKey"));
    }
{code}

Run this test as part of GridCacheAtomicFullApiSelfTest.java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)