Skip to content

Commit 40df043

Browse files
committed
Fix log format and copyBlockCrossNamespace with finally release resources
1 parent 765f72e commit 40df043

File tree

2 files changed

+28
-25
lines changed
  • hadoop-hdfs-project
    • hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs
    • hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode

2 files changed

+28
-25
lines changed

hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1964,17 +1964,21 @@ protected void copyBlockCrossNamespace(ExtendedBlock sourceBlk,
19641964
IOStreamPair pair =
19651965
DFSUtilClient.connectToDN(sourceDatanode, getConf().getSocketTimeout(), conf, saslClient,
19661966
socketFactory, getConf().isConnectToDnViaHostname(), this, sourceBlockToken);
1967+
try {
1968+
new Sender((DataOutputStream) pair.out).copyBlockCrossNamespace(sourceBlk, sourceBlockToken,
1969+
targetBlk, targetBlockToken, targetDatanode);
19671970

1968-
new Sender((DataOutputStream) pair.out).copyBlockCrossNamespace(sourceBlk, sourceBlockToken,
1969-
targetBlk, targetBlockToken, targetDatanode);
1970-
1971-
pair.out.flush();
1971+
pair.out.flush();
19721972

1973-
DataInputStream reply = new DataInputStream(pair.in);
1974-
BlockOpResponseProto proto = BlockOpResponseProto.parseFrom(PBHelperClient.vintPrefixed(reply));
1975-
DataTransferProtoUtil.checkBlockOpStatus(proto,
1976-
"copyBlockCrossNamespace " + sourceBlk + " to " + targetBlk + " from " + sourceDatanode
1977-
+ " to " + targetDatanode);
1973+
DataInputStream reply = new DataInputStream(pair.in);
1974+
BlockOpResponseProto proto =
1975+
BlockOpResponseProto.parseFrom(PBHelperClient.vintPrefixed(reply));
1976+
DataTransferProtoUtil.checkBlockOpStatus(proto,
1977+
"copyBlockCrossNamespace " + sourceBlk + " to " + targetBlk + " from " + sourceDatanode
1978+
+ " to " + targetDatanode);
1979+
} finally {
1980+
IOUtilsClient.cleanupWithLogger(LOG, pair.in, pair.out);
1981+
}
19781982
}
19791983

19801984
/**

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3124,17 +3124,17 @@ public void run() {
31243124

31253125
// read ack
31263126
if (isClient) {
3127-
DNTransferAckProto closeAck =
3128-
DNTransferAckProto.parseFrom(PBHelperClient.vintPrefixed(in));
3127+
DNTransferAckProto closeAck = DNTransferAckProto.parseFrom(
3128+
PBHelperClient.vintPrefixed(in));
31293129
LOG.debug("{}: close-ack={}", getClass().getSimpleName(), closeAck);
31303130
if (closeAck.getStatus() != Status.SUCCESS) {
31313131
if (closeAck.getStatus() == Status.ERROR_ACCESS_TOKEN) {
31323132
throw new InvalidBlockTokenException(
3133-
"Got access token error for connect ack, targets=" + Arrays.asList(targets));
3133+
"Got access token error for connect ack, targets="
3134+
+ Arrays.asList(targets));
31343135
} else {
3135-
throw new IOException(
3136-
"Bad connect ack, targets=" + Arrays.asList(targets) + " status="
3137-
+ closeAck.getStatus());
3136+
throw new IOException("Bad connect ack, targets="
3137+
+ Arrays.asList(targets) + " status=" + closeAck.getStatus());
31383138
}
31393139
}
31403140
} else {
@@ -3145,7 +3145,8 @@ public void run() {
31453145
throw new RuntimeException(ie);
31463146
}
31473147
handleBadBlock(source, ie, false);
3148-
LOG.warn("{}:Failed to transfer {} to {} got", bpReg, source, targets[0], ie);
3148+
LOG.warn("{}:Failed to transfer {} to {} got",
3149+
bpReg, source, targets[0], ie);
31493150
} catch (Throwable t) {
31503151
LOG.error("Failed to transfer block {}", source, t);
31513152
if (copyBlockCrossNamespace) {
@@ -4428,9 +4429,8 @@ public void copyBlockCrossNamespace(ExtendedBlock sourceBlk, ExtendedBlock targe
44284429
LOG.info(msg);
44294430
throw new IOException(msg);
44304431
}
4431-
LOG.info(getDatanodeInfo() + " copyBlock: Starting thread to transfer: " + "block:"
4432-
+ sourceBlk + " from " + this.getDatanodeUuid() + " to " + targetDn.getDatanodeUuid()
4433-
+ "(" + targetDn + ")");
4432+
LOG.info("{} copyBlock: Starting thread to transfer block {} from {} to {} ({})",
4433+
getDatanodeInfo(), sourceBlk, this.getDatanodeUuid(), targetDn.getDatanodeUuid(), targetDn);
44344434
Future<?> result;
44354435
if (this.getDatanodeUuid().equals(targetDn.getDatanodeUuid())) {
44364436
result = copyBlockCrossNamespaceExecutor.submit(new LocalBlockCopy(sourceBlk, targetBlk));
@@ -4485,15 +4485,14 @@ public Boolean call() throws IOException {
44854485

44864486
BlockLocalPathInfo srcBlpi = data.getBlockLocalPathInfo(sourceBlk);
44874487
BlockLocalPathInfo dstBlpi = data.getBlockLocalPathInfo(targetBlk);
4488-
LOG.info(
4489-
getClass().getSimpleName() + ": Hardlinked " + sourceBlk + "( " + srcBlpi.getBlockPath()
4490-
+ " " + srcBlpi.getMetaPath() + " ) " + "to " + targetBlk + "( "
4491-
+ dstBlpi.getBlockPath() + " " + dstBlpi.getMetaPath() + " ) ");
4488+
LOG.info("{}: Hardlinked {} ( {} {} ) to {} ( {} {} ).", getClass().getSimpleName(),
4489+
sourceBlk, srcBlpi.getBlockPath(), srcBlpi.getMetaPath(), targetBlk,
4490+
dstBlpi.getBlockPath(), dstBlpi.getMetaPath());
44924491

44934492
metrics.incrBlocksReplicatedViaHardlink();
44944493
} catch (IOException e) {
4495-
LOG.warn("Local block copy for src : " + sourceBlk.getBlockName() + ", dst : "
4496-
+ targetBlk.getBlockName() + " failed", e);
4494+
LOG.warn("Local block copy from {} to {} failed: {}", sourceBlk.getBlockName(),
4495+
targetBlk.getBlockName(), e);
44974496
throw e;
44984497
}
44994498
return true;

0 commit comments

Comments
 (0)