Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.4.0
-
None
Description
When we remove volumes, it may cause IncrementalBlockReportManager#getPerStorageIBR throws NPE.
Consider below situation:
1、we have down createRbw、finalizeBlock. But have not done datanode.closeBlock in method `BlockReceiver.PacketResponder#finalizeBlock`.
2、we remove volume which replica was written to and it executes such code: `storageMap.remove(storageUuid);`
3、 we begin to execute datanode.closeBlock which try to send IBR to NameNode. but when getting DatanodeStorage from storageMap using
storageUuid, we will get null because we have remove this storageUuid key from storageMap.
4、Throw NPE in getPerStorageIBR method, because ConcurrentHashMap don't allow null key.
Attachments
Issue Links
- links to