I&#x27;ll take one point here. Antirez&#x27;s point that clients <i>have</i> to timeout on locks, otherwise the resource will be deadlocked is not correct. 
We implemented an alternative model based on distributed shared memory. Clients take a lock on the root of a subtree (of potentially millions of inodes in our version of HDFS) and persist the lock to shared memory and look for existing locks on the subtree in shared memory. If the client dies while processing the subtree, its lock is still persisted in shared memory alongs with the clientID. If another client tries to take the lock and it notices the client holding the lock has died, it takes the lock. 
We used heartbeats to shared memroy to implement the failure detector for clients (based again on shared memory <a href="http:&#x2F;&#x2F;www.jimdowling.info&#x2F;sites&#x2F;default&#x2F;files&#x2F;leader_election_using_newsql_db.pdf" rel="nofollow">http:&#x2F;&#x2F;www.jimdowling.info&#x2F;sites&#x2F;default&#x2F;files&#x2F;leader_electi...</a> ). Importantly, timeouts for heartbeats expand when the system is congested.