When we deletesnapshot, we are deleting the blocks associated to that snapshot and after that we do logsync to editlog about deleteSnapshot.
There can be a chance that blocks removed from blocks map but before log sync if there is BR , NN may finds that block does not exist in blocks map and may invalidate that block. As part HB, invalidation info also can go. After this steps if Namenode shutdown before actually do logsync, On restart it will still consider that snapshot Inodes and expect blocks to report from DN.
Simple solution is, we should simply move down that blocks removal after logsync only. Similar to delete op.