Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
Federation Branch
-
None
-
Reviewed
Description
MiniDFSCluster#shouldWait() method waits for all the datanodes to come up and register with the namenode.
Due to threading issues some of the tests fail for two reasons:
- Datanode#isDatanodeUp() fails even if all the BPOfferService threads have exited. This is due to Thread.isAlive()
returning true, even though the thread has exited. Adding a check to BPOfferService#shouldService run as an addition,
fixes this issues. - shouldWait(), where isBPServiceAlive() is called, does not work when a BPOfferService thread fails before the
datanode has discovered the BPID, from handshake with namenode. This can be fixed by checking the thread state using
InetSocketAddress to determine the BPOfferService, instead of BPID.