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.
return {};
        }
    private:
        std::shared_ptr<StorageReplicatedMergeTree> storage;
        std::shared_ptr<ReplicatedMergeTreeSink> sink;
        String part_name;
        MergeTreePartInfo part_info;
        BackupPtr backup;
        String data_path_in_backup;
    };
};
#if 0
PartsTemporaryRename renamed_parts(*this, "detached/");
MutableDataPartsVector loaded_parts = tryLoadPartsToAttach(partition, attach_part, query_context, renamed_parts);
ReplicatedMergeTreeSink output(*this, metadata_snapshot, 0, 0, 0, false, false, query_context,
    true);
for (size_t i = 0; i < loaded_parts.size(); ++i)
{
    const String old_name = loaded_parts[i]->name;
    output.writeExistingPart(loaded_parts[i]);
    renamed_parts.old_and_new_names[i].old_name.clear();
    LOG_DEBUG(log, "Attached part {} as {}", old_name, loaded_parts[i]->name);
    results.push_back(PartitionCommandResultInfo{
        .partition_id = loaded_parts[i]->info.partition_id,
        .part_name = loaded_parts[i]->name,
        .old_part_name = old_name,
    });
}
#endif
RestoreTaskPtr StorageReplicatedMergeTree::restoreData(