Project

General

Profile

Task #2178

Story #2166: Hazelcast cluster errors need to be isolated

Use Lock.tryLock() (not Lock.lock()) in Metacat

Added by Chris Jones over 12 years ago. Updated over 12 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
Category:
Metacat
Start date:
2012-01-09
Due date:
% Done:

0%

Milestone:
CCI-1.0.0
Product Version:
*
Story Points:
Sprint:

Description

In order to avoid potential deadlocks in Hazelcast, convert calls to Lock.lock() to Lock.tryLock() and introduce a timeout for the try. Also introduce a queue structure to re-process operations that need to be re-tried if the lock fails.

History

#1 Updated by Chris Jones over 12 years ago

  • Status changed from New to In Progress

#2 Updated by Chris Jones over 12 years ago

  • Status changed from In Progress to Rejected

Using lock.tryLock() in Metacat would require a task-based queue for all API calls to the REST API implementation so that if the lock fails, the task would be queued and retried later. This would be a major change to the way Metacat handles D1 REST requests. Since only Metacat is locking the pid for a given object, the chance of lock contention is very low, and blocking locks should work fine. Rejecting this for now.

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 14.8 MB)