[ 
https://issues.apache.org/jira/browse/GEODE-4928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Smith reopened GEODE-4928:
------------------------------
      Assignee:     (was: Bruce Schuchardt)

The fix attempted for this doesn't quite work, and here's why:

When a member/client leaves, the change causes both the transaction lock and 
DLock to clean up whatever locks that member had. DLocks clean up rather 
quickly, whereas transaction lock cleanup happens asynchronously in the 
background. The fix was to have the transaction lock grantor set some state 
letting the DLock grantor know that the transaction lock is cleaning up locks, 
and have the DLock grantor wait. However, the DLock grantor can get beyond that 
check without the Transaction grantor having notified, meaning that the window 
is reduced but not closed.

In addition to the above problem, if the lock grantors are actually different 
members, making the dlock grantor wait on the transaction lock grantor in the 
same process doesn't help.

The test written for this issue is demonstrating these issues sporadically, see 
GEODE-5470.

I don't think we ever really designed these two services to work together that 
way, so I think this would be a feature to be implemented, not a bug to be 
fixed. Maybe we could have DLock and Transaction locks synchronize on a view 
number, rather than a boolean flag, but that requires new messages and 
significant reworking of how views are processed. Maybe we could mark certain 
DLock services as having to be synchronized with transaction locks?

> DistributedLockService doesn't work as expected while the dlock grantor is 
> initialized
> --------------------------------------------------------------------------------------
>
>                 Key: GEODE-4928
>                 URL: https://issues.apache.org/jira/browse/GEODE-4928
>             Project: Geode
>          Issue Type: Bug
>          Components: distributed lock service
>            Reporter: Bruce Schuchardt
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.6.0
>
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> I wrote a function that obtained a dlock and then performed a transaction.  
> It always operates on the same dlock key and the same keys in my region.  
> That protects against getting a commit conflict exception BUT this sometimes 
> fails if the JVM holding the lock crashes.  One of the functions appears to 
> get the dlock okay but then its transaction fails when it goes to commit.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to