|
@@ -532,7 +532,7 @@ public class DFSClient implements FSConstants, java.io.Closeable {
|
|
|
return hints;
|
|
|
}
|
|
|
|
|
|
- private static LocatedBlocks callGetBlockLocations(ClientProtocol namenode,
|
|
|
+ static LocatedBlocks callGetBlockLocations(ClientProtocol namenode,
|
|
|
String src, long start, long length) throws IOException {
|
|
|
try {
|
|
|
return namenode.getBlockLocations(src, start, length);
|
|
@@ -929,25 +929,28 @@ public class DFSClient implements FSConstants, java.io.Closeable {
|
|
|
|
|
|
boolean done = false;
|
|
|
for(int j = 0; !done && j < datanodes.length; j++) {
|
|
|
- //connect to a datanode
|
|
|
- final Socket sock = socketFactory.createSocket();
|
|
|
- NetUtils.connect(sock,
|
|
|
- NetUtils.createSocketAddr(datanodes[j].getName()),
|
|
|
- timeout);
|
|
|
- sock.setSoTimeout(timeout);
|
|
|
+ Socket sock = null;
|
|
|
+ DataOutputStream out = null;
|
|
|
+ DataInputStream in = null;
|
|
|
+
|
|
|
+ try {
|
|
|
+ //connect to a datanode
|
|
|
+ sock = socketFactory.createSocket();
|
|
|
+ NetUtils.connect(sock,
|
|
|
+ NetUtils.createSocketAddr(datanodes[j].getName()), timeout);
|
|
|
+ sock.setSoTimeout(timeout);
|
|
|
|
|
|
- DataOutputStream out = new DataOutputStream(
|
|
|
- new BufferedOutputStream(NetUtils.getOutputStream(sock),
|
|
|
- DataNode.SMALL_BUFFER_SIZE));
|
|
|
- DataInputStream in = new DataInputStream(NetUtils.getInputStream(sock));
|
|
|
+ out = new DataOutputStream(
|
|
|
+ new BufferedOutputStream(NetUtils.getOutputStream(sock),
|
|
|
+ DataNode.SMALL_BUFFER_SIZE));
|
|
|
+ in = new DataInputStream(NetUtils.getInputStream(sock));
|
|
|
|
|
|
- // get block MD5
|
|
|
- try {
|
|
|
if (LOG.isDebugEnabled()) {
|
|
|
LOG.debug("write to " + datanodes[j].getName() + ": "
|
|
|
- + DataTransferProtocol.OP_BLOCK_CHECKSUM +
|
|
|
- ", block=" + block);
|
|
|
+ + DataTransferProtocol.OP_BLOCK_CHECKSUM + ", block=" + block);
|
|
|
}
|
|
|
+
|
|
|
+ // get block MD5
|
|
|
out.writeShort(DataTransferProtocol.DATA_TRANSFER_VERSION);
|
|
|
out.write(DataTransferProtocol.OP_BLOCK_CHECKSUM);
|
|
|
out.writeLong(block.getBlockId());
|