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.
void increaseDataVolume(ssize_t bytes, ssize_t rows, ssize_t parts);
    void setDataVolume(size_t bytes, size_t rows, size_t parts);
    std::atomic<size_t> total_active_size_bytes = 0;
    std::atomic<size_t> total_active_size_rows = 0;
    std::atomic<size_t> total_active_size_parts = 0;
    
    mutable std::set<String> query_id_set;
    mutable std::mutex query_id_set_mutex;
    
    MatcherFn getPartitionMatcher(const ASTPtr & partition, ContextPtr context) const;
    
    virtual std::unique_ptr<MergeTreeSettings> getDefaultSettings() const = 0;
    void loadDataPartsFromDisk(
        DataPartsVector & broken_parts_to_detach,
        DataPartsVector & duplicate_parts_to_remove,
        ThreadPool & pool,
        size_t num_parts,
        std::queue<std::vector<std::pair<String, DiskPtr>>> & parts_queue,
        bool skip_sanity_checks,
        const MergeTreeSettingsPtr & settings);
    void loadDataPartsFromWAL(
        DataPartsVector & broken_parts_to_detach,
        DataPartsVector & duplicate_parts_to_remove,
        MutableDataPartsVector & parts_from_wal,
        DataPartsLock & part_lock);
    void resetObjectColumnsFromActiveParts(const DataPartsLock & lock);
    void updateObjectColumns(const DataPartPtr & part, const DataPartsLock & lock);
    
    
    virtual std::optional<ZeroCopyLock> tryCreateZeroCopyExclusiveLock(const String &, const DiskPtr &) { return std::nullopt; }