Vladimir Ozerov created IGNITE-835:
-------------------------------------- Summary: 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: Yakov Zhdanov Priority: Critical Fix For: sprint-4 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) |
Free forum by Nabble | Edit this page |