HDFS-10688. BPServiceActor may run into a tight loop for sending block report when hitting IOException. Contributed by Chen Liang.

This commit is contained in:
Jing Zhao 2016-07-25 18:41:13 -07:00
parent d383bfdcd4
commit 0cde9e12a7

View File

@ -649,18 +649,23 @@ private void offerService() throws Exception {
return; return;
} }
LOG.warn("RemoteException in offerService", re); LOG.warn("RemoteException in offerService", re);
sleepAfterException();
} catch (IOException e) {
LOG.warn("IOException in offerService", e);
sleepAfterException();
}
processQueueMessages();
} // while (shouldRun())
} // offerService
private void sleepAfterException() {
try { try {
long sleepTime = Math.min(1000, dnConf.heartBeatInterval); long sleepTime = Math.min(1000, dnConf.heartBeatInterval);
Thread.sleep(sleepTime); Thread.sleep(sleepTime);
} catch (InterruptedException ie) { } catch (InterruptedException ie) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
} catch (IOException e) {
LOG.warn("IOException in offerService", e);
} }
processQueueMessages();
} // while (shouldRun())
} // offerService
/** /**
* Register one bp with the corresponding NameNode * Register one bp with the corresponding NameNode