HDFS-15199. NPE in BlockSender. Contributed by Ayush Saxena.
This commit is contained in:
parent
ce6614565e
commit
64eb5b2709
|
@ -664,18 +664,21 @@ class BlockSender implements java.io.Closeable {
|
||||||
* It was done here because the NIO throws an IOException for EPIPE.
|
* It was done here because the NIO throws an IOException for EPIPE.
|
||||||
*/
|
*/
|
||||||
String ioem = e.getMessage();
|
String ioem = e.getMessage();
|
||||||
|
if (ioem != null) {
|
||||||
/*
|
/*
|
||||||
* If we got an EIO when reading files or transferTo the client socket,
|
* If we got an EIO when reading files or transferTo the client
|
||||||
* it's very likely caused by bad disk track or other file corruptions.
|
* socket, it's very likely caused by bad disk track or other file
|
||||||
|
* corruptions.
|
||||||
*/
|
*/
|
||||||
if (ioem.startsWith(EIO_ERROR)) {
|
if (ioem.startsWith(EIO_ERROR)) {
|
||||||
throw new DiskFileCorruptException("A disk IO error occurred", e);
|
throw new DiskFileCorruptException("A disk IO error occurred", e);
|
||||||
}
|
}
|
||||||
if (!ioem.startsWith("Broken pipe") && !ioem.startsWith("Connection reset")) {
|
if (!ioem.startsWith("Broken pipe")
|
||||||
|
&& !ioem.startsWith("Connection reset")) {
|
||||||
LOG.error("BlockSender.sendChunks() exception: ", e);
|
LOG.error("BlockSender.sendChunks() exception: ", e);
|
||||||
datanode.getBlockScanner().markSuspectBlock(
|
datanode.getBlockScanner().markSuspectBlock(
|
||||||
ris.getVolumeRef().getVolume().getStorageID(),
|
ris.getVolumeRef().getVolume().getStorageID(), block);
|
||||||
block);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw ioeToSocketException(e);
|
throw ioeToSocketException(e);
|
||||||
|
|
Loading…
Reference in New Issue