Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Invalid
-
2.8.0, 2.7.3
-
None
-
None
Description
Reading through the block reporting code I think I've spotted a case when block reports can silently be dropped and leave thread waiting indefinitely on a FutureTask that never will be executed.
The BlockReportProcessingThread.enqueue method doesn't return any status on if the enqueuing of the task was successful and does not handle the case when the queue is full and offer return false.
Going back through the call stack to BlockManager.runBlockOp, which indirectly calls enqueue with a FutureTask and then proceeds to do get() om the task.
So if the internal queue in the BlockReportingProcessingThread is full, the BR would never be handled and the thread queuing the task would wait indefinitely on the FutureTask that will never be executed.
Attachments
Issue Links
- relates to
-
HDFS-9198 Coalesce IBR processing in the NN
-
- Closed
-