HDFS-3664. BlockManager race when stopping active services. Contributed by Colin Patrick McCabe

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1383756 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Eli Collins 2012-09-12 04:12:49 +00:00
parent a5e50dfae9
commit 08f061b366
4 changed files with 18 additions and 5 deletions

View File

@ -590,6 +590,9 @@ Release 2.0.2-alpha - 2012-09-07
HDFS-2757. Cannot read a local block that's being written to when
using the local read short circuit. (Jean-Daniel Cryans via eli)
HDFS-3664. BlockManager race when stopping active services.
(Colin Patrick McCabe via eli)
BREAKDOWN OF HDFS-3042 SUBTASKS

View File

@ -364,11 +364,10 @@ public class BlockManager {
replicationThread.join(3000);
}
} catch (InterruptedException ie) {
} finally {
if (pendingReplications != null) pendingReplications.stop();
blocksMap.close();
datanodeManager.close();
}
datanodeManager.close();
pendingReplications.stop();
blocksMap.close();
}
/** @return the datanodeManager */

View File

@ -183,7 +183,13 @@ public class DatanodeManager {
}
void close() {
if (decommissionthread != null) decommissionthread.interrupt();
if (decommissionthread != null) {
decommissionthread.interrupt();
try {
decommissionthread.join(3000);
} catch (InterruptedException e) {
}
}
heartbeatManager.close();
}

View File

@ -74,6 +74,11 @@ class HeartbeatManager implements DatanodeStatistics {
void close() {
heartbeatThread.interrupt();
try {
// This will no effect if the thread hasn't yet been started.
heartbeatThread.join(3000);
} catch (InterruptedException e) {
}
}
synchronized int getLiveDatanodeCount() {