// ------------------------------------------------------ ClusterLockManager
public void unlock(Serializable lockId)
{
ClusterNode myself = getLocalClusterNode();
if (myself == null)
{
throw new IllegalStateException("Must call start() before first call to unlock()");
}
ClusterLockState category = getClusterLockState(lockId, false);
if (category == null)
{
getLocalHandler().unlockFromCluster(lockId, myself);
}
else if (myself.equals(category.getHolder()))
{
category.invalidate();
getLocalHandler().unlockFromCluster(lockId, myself);
removeLockState(category);
}