protected void copyLocksTo(List<Address> new_joiners) { Map<String,ServerLock> copy; synchronized(server_locks) { copy=new HashMap<>(server_locks); } log.trace("[%s] copying locks to %s", local_addr, new_joiners); for(Map.Entry<String,ServerLock> entry: copy.entrySet()) { for(Address joiner: new_joiners) { ServerLock lock = entry.getValue(); if (lock.owner != null) { sendCreateLockRequest(joiner, entry.getKey(), entry.getValue().owner); } synchronized (lock.condition) { Queue<Owner> queue = lock.condition.queue; for (Owner owner : queue) { sendAwaitConditionRequest(lock.lock_name, owner); } } } } } }
protected void copyLocksTo(List<Address> new_joiners) { Map<String,ServerLock> copy; synchronized(server_locks) { copy=new HashMap<>(server_locks); } log.trace("[%s] copying locks to %s", local_addr, new_joiners); for(Map.Entry<String,ServerLock> entry: copy.entrySet()) { for(Address joiner: new_joiners) { ServerLock lock = entry.getValue(); if (lock.owner != null) { sendCreateLockRequest(joiner, entry.getKey(), entry.getValue().owner); } synchronized (lock.condition) { Queue<Owner> queue = lock.condition.queue; for (Owner owner : queue) { sendAwaitConditionRequest(lock.lock_name, owner); } } } } } }