HDFS-14287. DataXceiverServer May Double-Close PeerServer. Contributed by BELUGA BEHR.

This commit is contained in:
Inigo Goiri 2019-02-18 11:00:04 -08:00
parent 920a89627d
commit 235e3da90a
1 changed files with 14 additions and 4 deletions

View File

@ -244,12 +244,17 @@ class DataXceiverServer implements Runnable {
}
// Close the server to stop reception of more requests.
lock.lock();
try {
peerServer.close();
closed = true;
if (!closed) {
peerServer.close();
closed = true;
}
} catch (IOException ie) {
LOG.warn("{}:DataXceiverServer: close exception",
datanode.getDisplayName(), ie);
} finally {
lock.unlock();
}
// if in restart prep stage, notify peers before closing them.
@ -270,11 +275,16 @@ class DataXceiverServer implements Runnable {
assert (datanode.shouldRun == false || datanode.shutdownForUpgrade) :
"shoudRun should be set to false or restarting should be true"
+ " before killing";
lock.lock();
try {
this.peerServer.close();
this.closed = true;
if (!closed) {
peerServer.close();
closed = true;
}
} catch (IOException ie) {
LOG.warn("{}:DataXceiverServer.kill()", datanode.getDisplayName(), ie);
} finally {
lock.unlock();
}
}