Project

General

Profile

Bug #11811

Deadlock in distributed LockManager implementation.

Added by Eduard Soltan 22 days ago. Updated 7 days ago.

Status:
Test
Priority:
Normal
Assignee:
Target version:
-
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:
production:
No
env_name:
topics:

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.

#5 Updated by Greg Shah 13 days ago

How is the testing coming along?

#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.

Also available in: Atom PDF