@Override protected void channelRead0(ChannelHandlerContext ctx, PipelineAckProto ack) throws Exception { Status reply = getStatus(ack); if (reply != Status.SUCCESS) { failed(ctx.channel(), () -> new IOException("Bad response " + reply + " for block " + block + " from datanode " + ctx.channel().remoteAddress())); return; } if (PipelineAck.isRestartOOBStatus(reply)) { failed(ctx.channel(), () -> new IOException("Restart response " + reply + " for block " + block + " from datanode " + ctx.channel().remoteAddress())); return; } if (ack.getSeqno() == HEART_BEAT_SEQNO) { return; } completed(ctx.channel()); }
throws Exception { Status pipelineStatus = resp.getStatus(); if (PipelineAck.isRestartOOBStatus(pipelineStatus)) { throw new IOException("datanode " + dnInfo + " is restarting");
if (PipelineAck.isRestartOOBStatus(pipelineStatus) && restartingNodeIndex.get() == -1) { checkRestart = true;
if (PipelineAck.isRestartOOBStatus(reply)) { final String message = "Datanode " + i + " is restarting: " + targets[i];
if (PipelineAck.isRestartOOBStatus(reply)) { if (shouldWaitForRestart(i)) { restartDeadline = dfsClient.getConf().datanodeRestartTimeout
if (PipelineAck.isRestartOOBStatus(pipelineStatus) && restartingNodeIndex.get() == -1) { checkRestart = true;
if (PipelineAck.isRestartOOBStatus(pipelineStatus) && !errorState.isRestartingNode()) { checkRestart = true;
if (PipelineAck.isRestartOOBStatus(reply)) { if (shouldWaitForRestart(i)) { restartDeadline = dfsClient.getConf().datanodeRestartTimeout