Details
Description
There are couple of synchronous calls in BPOfferservice (i.e reportBadBlocks and trySendErrorReport) which will wait for both of the actor threads to process this calls.
This calls are made with writeLock acquired.
When reportBadBlocks() is blocked at the RPC layer due to unreachable NN, subsequent heartbeat response processing has to wait for the write lock. It eventually gets through, but takes too long and it blocks the next heartbeat.
In our HA cluster setup, the standby namenode was taking a long time to process the request.
Requesting improvement in datanode to make the above calls asynchronous since these reports don't have any specific
deadlines, so extra few seconds of delay should be acceptable.
Attachments
Attachments
Issue Links
- breaks
-
HDFS-7916 'reportBadBlocks' from datanodes to standby Node BPServiceActor goes for infinite loop
- Closed