public void removeProcess(final String processName) { synchronized (lock) { final Map<String, ManagedProcess> processes = this.processes; final ManagedProcess process = processes.get(processName); if (process == null) { ROOT_LOGGER.attemptToRemoveNonExistentProcess(processName); // ignore return; } boolean removed = processes.remove(processName) != null; processesByKey.remove(new Key(process.getAuthKey())); if(removed) { processRemoved(processName); } lock.notifyAll(); } }