I met this issue if rm root directory, for remove non-root and non-empty directory, toRemovedBlocks isn't null, its toDeleteList size is 0.
when will return null?
Through this screenshot, we can find that if fileRemoved = -1, then toRemovedBlocks = null
And when deleteAllowed(iip) return false, fileRemoved can be -1,
Through the code of deleteAllowed, we can find that when src is the root, it can return false.
So without this PR, when I execute bin/hdfs dfs -rm -r /
I find the confusing auditlog line like following
2020-11-05 14:32:53,420 INFO FSNamesystem.audit (FSNamesystem.java:logAuditMessage(8102)) - allowed=true