Del() appears to have a fatal flaw: Since getBucket() only holds the hashmap lock ephemerally, the node being deleted could end up in a different bucket between get getBucket() and the del(). The read lock must be held across the operation!
How thoroughly has this been tested under concurrent loads?
EDIT: And I'm finding other problems as well. Assess this code carefully before you use it.
Del() appears to have a fatal flaw: Since getBucket() only holds the hashmap lock ephemerally, the node being deleted could end up in a different bucket between get getBucket() and the del(). The read lock must be held across the operation!
How thoroughly has this been tested under concurrent loads?
EDIT: And I'm finding other problems as well. Assess this code carefully before you use it.