[
https://issues.apache.org/jira/browse/IGNITE-642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15241384#comment-15241384
]
Yakov Zhdanov commented on IGNITE-642:
--------------------------------------
Vlad,
I tried to fix serialization for lock (and for semaphore, btw) and added few
tests after Alexey's suggestions on dev list and found this:
{noformat}
Code:
final IgniteLock lock = ignite1.reentrantLock("lock", true, true, true);
info("Lock created: " + lock);
lock.isFailoverSafe();
lock.isFair();
[19:36:34,413][ERROR][main][root] Test failed.
java.lang.NullPointerException
at
org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync.access$1100(GridCacheLockImpl.java:120)
at
org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl.isFailoverSafe(GridCacheLockImpl.java:1426)
at
org.apache.ignite.internal.processors.cache.distributed.GridCacheLockAbstractTest.testLockSerialization(GridCacheLockAbstractTest.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at junit.framework.TestCase.runTest(TestCase.java:176)
at
org.apache.ignite.testframework.junits.GridAbstractTest.runTestInternal(GridAbstractTest.java:1759)
at
org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:118)
at
org.apache.ignite.testframework.junits.GridAbstractTest$4.run(GridAbstractTest.java:1697)
at java.lang.Thread.run(Thread.java:724)
{noformat}
I suppose this should not throw an exception. Can you please take a look? Can
you please create a test that calls all public methods so we can make sure
there are no issues like this missed?
Please also review Alexey's and my commits (branch ignite-642). Semaphore and
lock serialization seems to work. However, we need to fix the issues found and
make another review round.
Thank you for your efforts!
> Implement IgniteReentrantLock data structure
> --------------------------------------------
>
> Key: IGNITE-642
> URL: https://issues.apache.org/jira/browse/IGNITE-642
> Project: Ignite
> Issue Type: Sub-task
> Components: data structures
> Affects Versions: 1.6
> Reporter: Dmitriy Setrakyan
> Assignee: Vladisav Jelisavcic
> Labels: features
> Fix For: 1.6
>
>
> We need to add {{IgniteReentrantLock}} data structure in addition to other
> data structures provided by Ignite. {{IgniteReentrantLock}} should have
> similar API to {{java.util.concurrent.locks.ReentrantLock}} class in JDK.
> As an example, you can see how
> [IgniteCountDownLatch|https://github.com/apache/incubator-ignite/blob/master/modules/core/src/main/java/org/apache/ignite/IgniteCountDownLatch.java]
> is implemented in
> [GridCacheCountDownLatchImpl|https://github.com/apache/incubator-ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheCountDownLatchImpl.java]
> class.
> In general we need to have an entity in ATOMIC cache storing lock-owner
> identifier together with a queue of waiters.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)