@Override protected void channelRead0(ChannelHandlerContext ctx, Routed routed) throws Exception { if (localJobManagerAddressFuture.isCompleted()) { if (localJobManagerAddress == null) { localJobManagerAddress = Await.result(localJobManagerAddressFuture, timeout); } Option<Tuple2<ActorGateway, Integer>> jobManager = retriever.getJobManagerGatewayAndWebPort(); if (jobManager.isDefined()) { Tuple2<ActorGateway, Integer> gatewayPort = jobManager.get(); String redirectAddress = HandlerRedirectUtils.getRedirectAddress(localJobManagerAddress, gatewayPort); if (redirectAddress != null) { HttpResponse redirect = HandlerRedirectUtils.getRedirectResponse(redirectAddress, routed.path()); KeepAliveWrite.flush(ctx, routed.request(), redirect); } else { respondAsLeader(ctx, routed, gatewayPort._1()); } } else { KeepAliveWrite.flush(ctx, routed.request(), HandlerRedirectUtils.getUnavailableResponse()); } } else { KeepAliveWrite.flush(ctx, routed.request(), HandlerRedirectUtils.getUnavailableResponse()); } }