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 (shutdown_called.exchange(true))
        return;
    
    fetcher.blocker.cancelForever();
    merger_mutator.merges_blocker.cancelForever();
    parts_mover.moves_blocker.cancelForever();
    stopBeingLeader();
    restarting_thread.shutdown();
    background_operations_assignee.finish();
    part_moves_between_shards_orchestrator.shutdown();
    {
        auto lock = queue.lockQueue();
        
        
        
        queue.pull_log_blocker.cancelForever();
    }
    background_moves_assignee.finish();
    auto data_parts_exchange_ptr = std::atomic_exchange(&data_parts_exchange_endpoint, InterserverIOEndpointPtr{});
    if (data_parts_exchange_ptr)
    {
        getContext()->getInterserverIOHandler().removeEndpointIfExists(data_parts_exchange_ptr->getId(replica_path));
        
        data_parts_exchange_ptr->blocker.cancelForever();
        
        std::unique_lock lock(data_parts_exchange_ptr->rwlock);
    }
}
StorageReplicatedMergeTree::~StorageReplicatedMergeTree()