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;
    
    {
        std::lock_guard lock(mutation_wait_mutex);
        mutation_wait_event.notify_all();
    }
    merger_mutator.merges_blocker.cancelForever();
    parts_mover.moves_blocker.cancelForever();
    background_operations_assignee.finish();
    background_moves_assignee.finish();
    if (deduplication_log)
        deduplication_log->shutdown();
    try
    {
        
        
        
        
        
        
        if (Context::getGlobalContextInstance()->getApplicationType() == Context::ApplicationType::SERVER
            && Context::getGlobalContextInstance()->isServerCompletelyStarted())
            clearOldPartsFromFilesystem(true);
    }