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.
#include <typeindex>
#include <unordered_set>
#include <filesystem>
namespace fs = std::filesystem;
namespace ProfileEvents
{
    extern const Event RejectedInserts;
    extern const Event DelayedInserts;
    extern const Event DelayedInsertsMilliseconds;
    extern const Event DuplicatedInsertedBlocks;
    extern const Event InsertedWideParts;
    extern const Event InsertedCompactParts;
    extern const Event InsertedInMemoryParts;
    extern const Event MergedIntoWideParts;
    extern const Event MergedIntoCompactParts;
    extern const Event MergedIntoInMemoryParts;
}
namespace CurrentMetrics
{
    extern const Metric DelayedInserts;
}
namespace
{
    constexpr UInt64 RESERVATION_MIN_ESTIMATION_SIZE = 1u * 1024u * 1024u; 
}
namespace DB
{
namespace ErrorCodes
{
    extern const int NO_SUCH_DATA_PART;