Что то у вас не в порядке.
В базе должны храниться только метаданные, документы лежать на диске.
Процесс удаления связан с процессом версионности, так что в БД нужен флаг is_deleted.
Собственно его и должен выставлять пользователь.
Удаление же администратором означает что взводится второй флаг is_persist_deleted
После этого документ пропадает из системы, но доступен по прямой ссылке в качестве исторического документа.
Соответственно при таком подходе, файловые операции не происходят, просто делается обновление нужных полей в пределах одной транзакции и ситуации "не удаления" не возникает. ПС и время "удаления" 5 сек это нонсенс