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

Mikhail Cherkasov updated IGNITE-5227:
--------------------------------------
    Description: 
A simple test reproducing this error:
{code}
    /**
     * @throws Exception if failed.
     */
    public void testBatchUnlock() throws Exception {
       startGrid(0);
       grid(0).createCache(new CacheConfiguration<Integer, 
Integer>(DEFAULT_CACHE_NAME)
            .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));

        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.

  was:
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.


> 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
>            Assignee: Mikhail Cherkasov
>            Priority: Critical
>             Fix For: 2.1
>
>
> A simple test reproducing this error:
> {code}
>     /**
>      * @throws Exception if failed.
>      */
>     public void testBatchUnlock() throws Exception {
>        startGrid(0);
>        grid(0).createCache(new CacheConfiguration<Integer, 
> Integer>(DEFAULT_CACHE_NAME)
>             .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
>         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)

Reply via email to