ArrayList<Pair<String,TServerInstance>> emptyServerGroups = new ArrayList<>(); for (TserverGroupInfo destTgi : tservers.values()) { if (extraSurplus.size() == 0) { break;
if (surplusExtra.size() == 0) { break;
private void addCallback(InetSocketAddress remoteSocket, Token token, ClientCallback clientCallback) { try { this.lock.readLock().lock(); if (this.clientCallbacks.contains(remoteSocket, token)) { log.error("Tried to use token twice (remote endpoint: {}, token: {})", remoteSocket, token); return; } } finally { this.lock.readLock().unlock(); } try { this.lock.writeLock().lock(); if (this.clientCallbacks.contains(remoteSocket, token)) { log.error("Tried to use token twice (remote endpoint: {}, token: {})", remoteSocket, token); } else { clientCallbacks.put(remoteSocket, token, clientCallback); log.info("Added callback (remote endpoint: {}, token: {})", remoteSocket, token); if (this.clientCallbacks.size() > 1000) { log.error("More than 1000 callbacks!"); } } } finally { this.lock.writeLock().unlock(); } }
private ClientCallback removeCallback(InetSocketAddress remoteSocket, Token token) { try { this.lock.readLock().lock(); if (!this.clientCallbacks.contains(remoteSocket, token)) { log.info("No callback found to be removed (remote endpoint: {}, token: {})", remoteSocket, token); return null; } } finally { this.lock.readLock().unlock(); } try { this.lock.writeLock().lock(); ClientCallback callback = clientCallbacks.remove(remoteSocket, token); if (callback == null) { log.info("No callback found to be removed (remote endpoint: {}, token: {})", remoteSocket, token); } else { log.info("Removed callback (remote endpoint: {}, token: {}). Remaining: {}", new Object[]{remoteSocket, token, this.clientCallbacks.size()}); triggerEvent(new TokenReleasedEvent(remoteSocket, token), true); } return callback; } finally { this.lock.writeLock().unlock(); } }