HDFS-14287. DataXceiverServer May Double-Close PeerServer. Contributed by BELUGA BEHR.
This commit is contained in:
parent
920a89627d
commit
235e3da90a
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue