private void checkTokenOnOtherServer(ChannelHandlerContext ctx, String token, int msgId) {
LRUCache.CacheEntry cacheEntry = LRUCache.LOGIN_TOKENS_CACHE.get(token);
if (cacheEntry == null) {
try {
blockingIOProcessor.executeDBGetServer(() -> {
String server;
log.debug("Checking invalid token in DB.");
server = dbManager.getServerByToken(token);
LRUCache.LOGIN_TOKENS_CACHE.put(token, new LRUCache.CacheEntry(server));
sendRedirectResponse(ctx, token, server, msgId);
});
} catch (RejectedExecutionException ree) {
log.warn("Error in getServerByToken handler. Limit of tasks reached.");
ctx.writeAndFlush(serverError(msgId), ctx.voidPromise());
}
} else {
log.debug("Taking token from cache.");
sendRedirectResponse(ctx, token, cacheEntry.value, msgId);
}
}