For some reasons when we delete a MergeTree Part in atomic way something may go wrong - and leave the `delete_tmp_*` folder or it's part on disk. This may lead to a disk space consumption over time.

It's suggested to delete this folders at least at server start-up. Current solution with `clearOldTemporaryDirectories()` doesn't work because this method is called periodically from a thread without any locks or advisory on folders - it may cause the race conditions.
{
    if (auto part = outdatePart(query_context->getCurrentTransaction().get(), part_name,  true))
        dropPartsImpl({part}, detach);
}
void StorageMergeTree::dropPartition(const ASTPtr & partition, bool detach, ContextPtr local_context)
{
    DataPartsVector parts_to_remove;
    
    {
        
        
        auto merge_blocker = stopMergesAndWait();
        const auto * partition_ast = partition->as<ASTPartition>();
        if (partition_ast && partition_ast->all)
            parts_to_remove = getVisibleDataPartsVector(local_context);
        else
        {
            String partition_id = getPartitionIDFromQuery(partition, local_context);
            parts_to_remove = getVisibleDataPartsVectorInPartition(local_context, partition_id);
        }
        
        removePartsFromWorkingSet(local_context->getCurrentTransaction().get(), parts_to_remove, true);
    }
    dropPartsImpl(std::move(parts_to_remove), detach);
}
void StorageMergeTree::dropPartsImpl(DataPartsVector && parts_to_remove, bool detach)