List of usage examples for org.apache.hadoop.hdfs.protocol.datatransfer PipelineAck UNKOWN_SEQNO
long UNKOWN_SEQNO
To view the source code for org.apache.hadoop.hdfs.protocol.datatransfer PipelineAck UNKOWN_SEQNO.
Click Source Link
From source file:com.mellanox.r4h.DataXceiverBase.java
License:Apache License
private void processPacketReply(Msg msg) throws IOException { boolean readAckfields = false; Msg origMsg = msg.getMirror(false);/*from ww w.j a v a2 s . c o m*/ PacketMessageContext pmc = PacketMessageContext.getPacketMessageContext(origMsg); if (LOG.isTraceEnabled()) { LOG.trace("origMsg isMirror=" + origMsg.getIsMirror()); } long expected = PipelineAck.UNKOWN_SEQNO; long seqno = PipelineAck.UNKOWN_SEQNO; R4HPipelineAck ack = new R4HPipelineAck(); try { msg.getIn().position(0); ack.readFields(new DataInputStream(new ByteBufferInputStream(msg.getIn()))); readAckfields = true; if (LOG.isDebugEnabled()) { LOG.debug("PacketResponder " + oprHeader.getNumTargets() + " for block " + blockReceiver.getBlock() + " got " + ack); } msg.getOut().position(0); seqno = ack.getSeqno(); expected = pmc.getSeqno(); boolean isLastPkt = pmc.isLastPacketInBlock(); // verify seqno if (seqno != expected) { if (LOG.isTraceEnabled()) { LOG.trace(String.format("MSG user context: msg ref=%s , context ref=%s", Integer.toHexString(System.identityHashCode(msg)), Integer.toHexString(System.identityHashCode(msg.getUserContext())))); } throw new IOException("PacketResponder " + oprHeader.getNumTargets() + " for block " + oprHeader.getBlock() + " expected seqno:" + expected + " received:" + seqno); } // If this is the last packet in block, then close block // file and finalize the block before responding success if (isLastPkt) { blockReceiver.finalizeBlock(); asyncCloseClientSession(); } PipelineAck ackReadyForReply = preparePipelineAck(origMsg, expected, ack, SUCCESS); pmc.setMessageAck(ackReadyForReply); } catch (Throwable e) { LOG.error("Failed during processing packet reply: " + blockReceiver.getBlock() + " " + oprHeader.getNumTargets() + " Exception " + StringUtils.stringifyException(e)); if ((clientSession != null) && (!clientSession.getIsClosing())) { asyncCloseClientSession(); } } finally { if (serverSession != null) { if (!readAckfields) { PipelineAck brokenPipelineError = prepareBrokenPipelineAck(origMsg, expected); pmc.setMessageAck(brokenPipelineError); } else if ((clientSession == null) && (!pmc.isLastPacketInBlock())) { PipelineAck errorAck = preparePipelineAck(origMsg, expected, ack, ERROR); pmc.setMessageAck(errorAck); } } int refCount = pmc.decrementReferenceCounter(); if (refCount == 0) { msgCallbacks.onMessageAction(origMsg); } } }