I'm working with this scenario:
RemoteData implements Unreferenced
ClientA requests and receives a reference to RemoteData
ClientA requests a lock on record 1
Record 1 is locked
ClientA crashes
ClientB requests and receives a reference to RemoteData
ClientB requests a lock on record 1
ClientB waits...
The question here is if the HashMap that stores the [ClientID|Record Number] is in a 'wait' state (because ClientA still has a "ghost reference" to record 1), all the while checking if HashMap.containsValue(recordNum), will the Garbage Collector still kick-in and clean up the dead reference to ClientA? If not, when will unreferenced() be called? There's no way the lock on record 1 can be resolved until unreferenced() is called which has code to release the lock.
This is certainly an important issue because a ClientB's request could essentially "hang" for an indeterminate about of time.
Has anyone figured this out?
[ June 03, 2003: Message edited by: Christian Garcia ]