If the client OOM because of deleting large directory, make it OOM upon getContentSummary can actually help avoiding an inconsistent (half completed) deletion states.
This leads into one of my favorite topics, which is how and why HDFS APIs differ from POSIX. POSIX gives you unlink and rmdir, so rm has to crawl the directory tree, doing O operations. However, HDFS implements recursive delete as a single RPC, so 1 operation. This is for performance. We want to avoid recursing when doing a big delete since RPCs are expensive. Deletes are also most of the time intentional. So, this patch greatly slows down the common case, when we already have safety mechanisms like trash and snapshots in place, and is counter to the intent of the recursive delete RPC.
The other API difference I like is how HDFS combines readdir and stat into listStatus, again to avoid extra RPCs.
Finally, to tie it back to your comment, right now there is no OOM (or partial delete) since the client just calls the single RPC and does not need to enumerate the directory. With this patch, it would. This would be a regression where a client with a small heap now cannot delete a large directory.