ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Goncharuk (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-5227) StackOverflowError in GridCacheMapEntry#checkOwnerChanged()
Date Mon, 15 May 2017 14:18:04 GMT
Alexey Goncharuk created IGNITE-5227:
----------------------------------------

             Summary: StackOverflowError in GridCacheMapEntry#checkOwnerChanged()
                 Key: IGNITE-5227
                 URL: https://issues.apache.org/jira/browse/IGNITE-5227
             Project: Ignite
          Issue Type: Bug
    Affects Versions: 1.6
            Reporter: Alexey Goncharuk
            Priority: Critical
             Fix For: 2.1


A simple test reproducing this error:
{code}
    /**
     * @throws Exception if failed.
     */
    public void testBatchUnlock() throws Exception {
        startGrid(0);

        try {
            final CountDownLatch releaseLatch = new CountDownLatch(1);

            IgniteInternalFuture<Object> fut = GridTestUtils.runAsync(new Callable<Object>()
{
                @Override public Object call() throws Exception {
                    IgniteCache<Object, Object> cache = grid(0).cache(null);

                    Lock lock = cache.lock("key");

                    try {
                        lock.lock();

                        releaseLatch.await();
                    }
                    finally {
                        lock.unlock();
                    }

                    return null;
                }
            });

            Map<String, String> putMap = new LinkedHashMap<>();

            putMap.put("key", "trigger");

            for (int i = 0; i < 10_000; i++)
                putMap.put("key-" + i, "value");

            IgniteCache<Object, Object> asyncCache = grid(0).cache(null).withAsync();

            asyncCache.putAll(putMap);

            IgniteFuture<Object> resFut = asyncCache.future();

            Thread.sleep(1000);

            releaseLatch.countDown();

            fut.get();

            resFut.get();
        }
        finally {
            stopAllGrids();
        }
{code}
We should replace a recursive call with a simple iteration over the linked list.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message