HDFS-12358. Handle IOException when transferring edit log to Journal current dir through JN sync. Contributed by Hanisha Koneru.

This commit is contained in:
Arpit Agarwal 2017-08-26 22:47:55 -07:00
parent bb6a3c8330
commit 077a5eed9f
1 changed files with 14 additions and 11 deletions

View File

@ -403,20 +403,23 @@ private boolean downloadMissingLogSegment(URL url, RemoteEditLog log)
LOG.info("Downloaded file " + tmpEditsFile.getName() + " of size " + LOG.info("Downloaded file " + tmpEditsFile.getName() + " of size " +
tmpEditsFile.length() + " bytes."); tmpEditsFile.length() + " bytes.");
final boolean moveSuccess = journal.moveTmpSegmentToCurrent(tmpEditsFile, boolean moveSuccess = false;
try {
moveSuccess = journal.moveTmpSegmentToCurrent(tmpEditsFile,
finalEditsFile, log.getEndTxId()); finalEditsFile, log.getEndTxId());
if (!moveSuccess) { } catch (IOException e) {
// If move is not successful, delete the tmpFile LOG.info("Could not move %s to current directory.", tmpEditsFile);
LOG.debug("Move to current directory unsuccessful. Deleting temporary " + } finally {
"file: " + tmpEditsFile); if (tmpEditsFile.exists() && !tmpEditsFile.delete()) {
if (!tmpEditsFile.delete()) {
LOG.warn("Deleting " + tmpEditsFile + " has failed"); LOG.warn("Deleting " + tmpEditsFile + " has failed");
} }
return false;
} else {
metrics.incrNumEditLogsSynced();
} }
if (moveSuccess) {
metrics.incrNumEditLogsSynced();
return true; return true;
} else {
return false;
}
} }
private static DataTransferThrottler getThrottler(Configuration conf) { private static DataTransferThrottler getThrottler(Configuration conf) {