private NodeInternal registerNodeBase(ClientID clientId, boolean isLocalNode) {
    final NodeInternal node = new NodeImpl(clientId.toString(), clientId.toLong());

    nodesWriteLock.lock();
    try {
      NodeInternal old = nodes.putIfAbsent(clientId, node);
      if (old != null) {
        return old;
      } else {
        return node;
      }
    } finally {
      nodesWriteLock.unlock();
    }
  }