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/08/12 18:49:21 UTC

[jira] [Commented] (IGNITE-835) IgniteCache.lock is broken for PARTITIONED cache without near cache.

    [ https://issues.apache.org/jira/browse/IGNITE-835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15419297#comment-15419297 ] 

Pavel Tupitsyn commented on IGNITE-835:
---------------------------------------

Alexey, any update on this issue?

> IgniteCache.lock is broken for PARTITIONED cache without near cache.
> --------------------------------------------------------------------
>
>                 Key: IGNITE-835
>                 URL: https://issues.apache.org/jira/browse/IGNITE-835
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: sprint-2
>            Reporter: Vladimir Ozerov
>            Assignee: Alexey Goncharuk
>            Priority: Critical
>              Labels: Muted_test
>
> Steps to reproduce:
> 1) Go to GridCacheLockAbstractTest
> 2) Add the test source below.
> 3) Make sure to disable near cache (GridCacheLockAbstractTest.cacheConfiguration() -> setNearConfiguration(null)).
> 4) Run GridCachePartitionedLockSelfTest.testLockReentrancy() and observe assertion failure.
> 5) Enable near cache back and re-run the test. Observe that now it pass.
> {code}
> public void testLockReentrancy() throws Throwable {
>     for (int i = 10; i < 100; i++) {
>         System.out.println("Key: " + i);
>         final int i0 = i;
>         final Lock lock = cache1.lock(i);
>         lock.lockInterruptibly();
>         try {
>             final AtomicReference<Throwable> err = new AtomicReference<>();
>             Thread t =  new Thread(new Runnable() {
>                 @Override public void run() {
>                     try {
>                         assert !lock.tryLock();
>                         assert !lock.tryLock(100, TimeUnit.MILLISECONDS);
>                         assert !cache1.lock(i0).tryLock();
>                         assert !cache1.lock(i0).tryLock(100, TimeUnit.MILLISECONDS);
>                     }
>                     catch (Throwable e) {
>                         err.set(e);
>                     }
>                 }
>             });
>             t.start();
>             t.join();
>             if (err.get() != null)
>                 throw err.get();
>             lock.lock();
>             lock.unlock();
>             t =  new Thread(new Runnable() {
>                 @Override public void run() {
>                     try {
>                         assert !lock.tryLock();
>                         assert !lock.tryLock(100, TimeUnit.MILLISECONDS);
>                         assert !cache1.lock(i0).tryLock();
>                         assert !cache1.lock(i0).tryLock(100, TimeUnit.MILLISECONDS);
>                     }
>                     catch (Throwable e) {
>                         err.set(e);
>                     }
>                 }
>             });
>             t.start();
>             t.join();
>             if (err.get() != null)
>                 throw err.get();
>         }
>         finally {
>             lock.unlock();
>         }
>     }
> }
> {code}



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