HADOOP-17068. Client fails forever when namenode ipaddr changed. Contributed by Sean Chow.

(cherry picked from commit fa14e4bc00)
This commit is contained in:
He Xiaoqiao 2020-06-23 16:13:43 +08:00 committed by Wei-Chiu Chuang
parent faf26f70aa
commit 3a860e876e

View File

@ -650,6 +650,7 @@ private synchronized boolean updateAddress() throws IOException {
private synchronized void setupConnection( private synchronized void setupConnection(
UserGroupInformation ticket) throws IOException { UserGroupInformation ticket) throws IOException {
LOG.debug("Setup connection to " + server.toString());
short ioFailures = 0; short ioFailures = 0;
short timeoutFailures = 0; short timeoutFailures = 0;
while (true) { while (true) {
@ -712,8 +713,16 @@ private synchronized void setupConnection(
} catch (IOException ie) { } catch (IOException ie) {
if (updateAddress()) { if (updateAddress()) {
timeoutFailures = ioFailures = 0; timeoutFailures = ioFailures = 0;
try {
// HADOOP-17068: when server changed, ignore the exception.
handleConnectionFailure(ioFailures++, ie);
} catch (IOException ioe) {
LOG.warn("Exception when handle ConnectionFailure: "
+ ioe.getMessage());
}
} else {
handleConnectionFailure(ioFailures++, ie);
} }
handleConnectionFailure(ioFailures++, ie);
} }
} }
} }
@ -1279,7 +1288,7 @@ private synchronized void close() {
cleanupCalls(); cleanupCalls();
} }
} else { } else {
// log the info // Log the newest server information if update address.
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
LOG.debug("closing ipc connection to " + server + ": " + LOG.debug("closing ipc connection to " + server + ": " +
closeException.getMessage(),closeException); closeException.getMessage(),closeException);