Bug #11811
Deadlock in distributed LockManager implementation.
100%
History
#1 Updated by Eduard Soltan 22 days ago
- Status changed from New to WIP
In cluster mode, FWD deliberately turns off the in-JVM notifyAll signal, because the wake-up is supposed to arrive as a Geode event instead. Dirty-share locks were moved to a local, non-Geode implementation — but the tap stayed switched off. So a release frees the lock and nobody ever tells the waiting thread.
| Mode | How the waiter parks | Who wakes it |
|---|---|---|
| Single JVM | status.wait() on the lock-status object | The releaser calls status.notifyAll() — direct, same object |
| Cluster | same wait(), but lock state also lives in a shared Geode region | A release anywhere fires a Geode cache event; GeodeUpdateListener catches it and notifies |
Because the cluster path has its own notifier, the local notifyAll() is intentionally disabled when clustering is on. That's the !ClusterConfig.isEnabled() guard in InMemoryLockManager and LockStatusImpl.
The problem comes when a InMemoryLockManager for dirty table is used. It is local, and require status.notifyAll() to be called. However it don't pass the !ClusterConfig.isEnabled() check. I have some changes to correct that.
#3 Updated by Eduard Soltan 22 days ago
- % Done changed from 0 to 100
- Status changed from WIP to Review
- reviewer Constantin Asofiei added
Committed on 11811a, rev. 16732.
#4 Updated by Constantin Asofiei 21 days ago
- Status changed from Review to Internal Test
- Assignee set to Eduard Soltan
Please do some tests.
#6 Updated by Eduard Soltan 12 days ago
Greg Shah wrote:
How is the testing coming along?
I tested clustered application harness/Jmater/report, also finished ETF testing. Are any other tests required?
#7 Updated by Alexandru Lungu 7 days ago
- Status changed from Internal Test to Merge Pending
Please merge 11811a to trunk after 11521b and to customer main branch afterward (after 11764b that is going to customer branch as well).
#8 Updated by Eduard Soltan 7 days ago
- Status changed from Merge Pending to Test
11811a was merged into trunk rev. 16759 and ported to customer branch and archived.