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.
{
    std::unique_lock lock(currently_processing_in_background_mutex);
    auto current_mutation_it = current_mutations_by_version.find(mutation_version);
    
    if (current_mutation_it == current_mutations_by_version.end())
        return {};
    MergeTreeMutationStatus result{.is_done = false};
    const auto & mutation_entry = current_mutation_it->second;
    auto txn = tryGetTransactionForMutation(mutation_entry, log);
    assert(txn || mutation_entry.tid.isPrehistoric());
    auto data_parts = getVisibleDataPartsVector(txn);
    for (const auto & data_part : data_parts)
    {
        Int64 data_version = getUpdatedDataVersion(data_part, lock);
        if (data_version < mutation_version)
        {
            if (!mutation_entry.latest_fail_reason.empty())
            {
                result.latest_failed_part = mutation_entry.latest_failed_part;
                result.latest_fail_reason = mutation_entry.latest_fail_reason;
                result.latest_fail_time = mutation_entry.latest_fail_time;
                
                
                if (mutation_ids)
                {
                    auto mutations_begin_it = current_mutations_by_version.upper_bound(data_version);
                    for (auto it = mutations_begin_it; it != current_mutations_by_version.end(); ++it)