[JBoss JIRA] (JGRP-2283) Lock race condition
by Bela Ban (Jira)
[ https://issues.jboss.org/browse/JGRP-2283?page=com.atlassian.jira.plugin.... ]
Bela Ban edited comment on JGRP-2283 at 8/2/19 9:03 AM:
--------------------------------------------------------
This is a duplicate of JGRP-2364. Should they problem persist, please open a new JIRA.
was (Author: belaban):
This is a duplicate of JGRP-2364.
> Lock race condition
> -------------------
>
> Key: JGRP-2283
> URL: https://issues.jboss.org/browse/JGRP-2283
> Project: JGroups
> Issue Type: Bug
> Reporter: Bela Ban
> Assignee: Bela Ban
> Priority: Major
> Fix For: 4.1.2
>
> Attachments: RDBXGNBM.txt, m1PNLdDr.txt
>
>
> The attached program fails to run repeats of tryLock-unlock sequences.
> Program and config are attached
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (DROOLS-4396) [DMN Designer] Grid keyboard Control doesn't work after search is closed
by Jozef Marko (Jira)
[ https://issues.jboss.org/browse/DROOLS-4396?page=com.atlassian.jira.plugi... ]
Jozef Marko updated DROOLS-4396:
--------------------------------
Steps to Reproduce:
# Open a dmn model
# Navigate to some expression editor there, not literal expression, so you have multiple cells you can navigate between them
# Open the search component - upper right corner
# Close the search component
# Try to navigate in the expression grid by keyboard arrows
Current result: Keyboard navigation of expression editor doesn't work after search bar component is closed
Current result: Keyboard navigation of expression editor works after search bar component is closed
was:
# Open a dmn model
# Navigate to some expression editor there
# Open the search component - upper right corner
# Close the search component
# Try to navigate in the expression grid by keyboard arrows
Current result: Keyboard navigation of expression editor doesn't work after search bar component is closed
Current result: Keyboard navigation of expression editor works after search bar component is closed
> [DMN Designer] Grid keyboard Control doesn't work after search is closed
> ------------------------------------------------------------------------
>
> Key: DROOLS-4396
> URL: https://issues.jboss.org/browse/DROOLS-4396
> Project: Drools
> Issue Type: Bug
> Components: DMN Editor
> Affects Versions: 7.25.0.Final
> Reporter: Jozef Marko
> Assignee: Jozef Marko
> Priority: Major
> Labels: drools-tools
>
> There is a keyboard control for the dmn expression editor. However this keyboard control stop working after search is closed.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (JGRP-2364) simply lock and unlock JGroups lock repeatedly will create chaos
by Bela Ban (Jira)
[ https://issues.jboss.org/browse/JGRP-2364?page=com.atlassian.jira.plugin.... ]
Bela Ban resolved JGRP-2364.
----------------------------
Resolution: Done
Resolved. I changed one thing in your code though: you cannot set {{acquired}} and {{denied}} to false when there's no RELEASE_LOCK_OK: this would allow someone else to acquire the lock, and that should not be possible!
Scenario:
* A,B,C, C holds lock X
* A crashes, but the new view \{B,C\} is not yet installed (e.g. because FD_ALL has a high timeout, and FD_SOCK is missing)
* C's unlock() request times out waiting for RELEASE_LOCK_OK
* If {{acquired}} and {{denied}} were set to false, a new locker would be able to acquire the lock
* This way, when view \{B,C\} is received by C, the RELEASE_LOCK request is resent to B and one reception of RELEASE_LOCK_OK, the lock is released, so someone else can acquire it.
> simply lock and unlock JGroups lock repeatedly will create chaos
> ----------------------------------------------------------------
>
> Key: JGRP-2364
> URL: https://issues.jboss.org/browse/JGRP-2364
> Project: JGroups
> Issue Type: Bug
> Affects Versions: 4.1.1
> Environment: JDK: 1.8
> JGroups: 4.1.1
> Lock: CENTRAL_LOCK
> Reporter: Yong Deng
> Assignee: Bela Ban
> Priority: Major
> Fix For: 4.1.2
>
> Attachments: LockSimpleTest.java
>
>
> I have one simple use case to reproduce the issue. In same thread, just lock/unlock the lock repeatedly. Turn the log level to TRACE, you will find the communication chaos between the client and the coordinate. *JGroups unlock will return immediately after sending out RELEASE_LOCK currently. Why unlock don’t wait and only return after receiving the RELEASE_LOCK_OK response?*
> * Current log:
> {code:java}
> 16:56:40,399 TRACE [CENTRAL_LOCK] A --> A: GRANT_LOCK[sample-lock, lock_id=1, owner=A::31, trylock, timeout=10000]
> 16:56:40,404 TRACE [CENTRAL_LOCK] A <-- A: GRANT_LOCK[sample-lock, lock_id=1, owner=A::31, trylock, timeout=10000, sender=A]
> 16:56:40,410 TRACE [CENTRAL_LOCK] A --> A: LOCK_GRANTED[sample-lock, lock_id=1, owner=A::31]
> 16:56:40,411 TRACE [CENTRAL_LOCK] A <-- A: LOCK_GRANTED[sample-lock, lock_id=1, owner=A::31, sender=A]
> 16:56:40,413 TRACE [CENTRAL_LOCK] A --> A: RELEASE_LOCK[sample-lock, lock_id=1, owner=A::31]
> 16:56:40,414 TRACE [CENTRAL_LOCK] A <-- A: RELEASE_LOCK[sample-lock, lock_id=1, owner=A::31, sender=A]
> 16:56:40,414 TRACE [CENTRAL_LOCK] A --> A: RELEASE_LOCK[sample-lock, lock_id=1, owner=A::31]
> 16:56:40,415 TRACE [CENTRAL_LOCK] A --> A: RELEASE_LOCK_OK[sample-lock, lock_id=1, owner=A::31]
> 16:56:40,415 TRACE [CENTRAL_LOCK] A --> A: RELEASE_LOCK[sample-lock, lock_id=1, owner=A::31]
> {code}
> * The expected log:
> {code:java}
> 2019-07-24 17:01:52,849 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] --> [A] GRANT_LOCK [sample-lock, lock_id=1, owner=A::63, trylock (timeout=10000)
> 2019-07-24 17:01:52,849 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] <-- [A] GRANT_LOCK [sample-lock, lock_id=1, owner=A::63, trylock (timeout=10000)
> 2019-07-24 17:01:52,852 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] --> [A] LOCK_GRANTED [sample-lock, lock_id=1, owner=A::63 ]
> 2019-07-24 17:01:52,852 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] <-- [A] LOCK_GRANTED [sample-lock, lock_id=1, owner=A::63 ]
> 2019-07-24 17:01:52,853 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] --> [A] RELEASE_LOCK [sample-lock, lock_id=1, owner=A::63 ]
> 2019-07-24 17:01:52,853 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] <-- [A] RELEASE_LOCK [sample-lock, lock_id=1, owner=A::63 ]
> 2019-07-24 17:01:52,853 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] --> [A] RELEASE_LOCK_OK [sample-lock, lock_id=1, owner=A::63 ]
> 2019-07-24 17:01:52,854 TRACE [org.jgroups.protocols.CENTRAL_LOCK] [A] <-- [A] RELEASE_LOCK_OK [sample-lock, lock_id=1, owner=A::63 ]
> {code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (JGRP-2299) LockService does not work correctly if unlock/lock is called in immediate succession
by Bela Ban (Jira)
[ https://issues.jboss.org/browse/JGRP-2299?page=com.atlassian.jira.plugin.... ]
Bela Ban resolved JGRP-2299.
----------------------------
Resolution: Done
Resolving this; let me know if this fixes all of your issues!
> LockService does not work correctly if unlock/lock is called in immediate succession
> ------------------------------------------------------------------------------------
>
> Key: JGRP-2299
> URL: https://issues.jboss.org/browse/JGRP-2299
> Project: JGroups
> Issue Type: Bug
> Affects Versions: 4.0.15
> Environment: Windows 10 Oracle JDK 1.8 131
> AIX IBM Java 8
> Reporter: Mirko Streckenbach
> Assignee: Bela Ban
> Priority: Major
> Fix For: 4.1.2
>
> Attachments: JGroupsExample.java, udp+lock.xml
>
>
> In our application we have encountered occasional cases of LockService allowing 2 processes to hold the same lock at the same time. I could reproduce this with a simple program (see atttachment) and it happens if for a lock "unlock" is called and immediately afterwards "lock". If there is a small delay (e.g. 1 second) between the two operations everything works as expected.
> This can be produced with the attached program. The program does lock/unlock/lock on a lock and then tries to lock the same lock from a different JChannel and is awarded the lock. If you place a small sleep() after the unlock, everything works as expected and the parallel lock is not awarded.
> If you turn on debugging you'll see no output between unlock and lock, so it looks to me like the lock is awarded without passing GRANT_LOCK messages to the stack. Using a conditional break point you can see that ClientLock.acquired is still true even after the unlock().
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months