ReplicatedMergeTreeCleanupThread.h 1.1 KB
Newer Older
1 2
#pragma once

3
#include <Core/Types.h>
4
#include <Common/ZooKeeper/Types.h>
5
#include <common/logger_useful.h>
6
#include <thread>
7
#include <map>
8 9 10 11 12 13 14 15


namespace DB
{

class StorageReplicatedMergeTree;


F
f1yegor 已提交
16
/** Removes obsolete data from a table of type ReplicatedMergeTree.
17 18 19 20
  */
class ReplicatedMergeTreeCleanupThread
{
public:
21
    ReplicatedMergeTreeCleanupThread(StorageReplicatedMergeTree & storage_);
22

23
    ~ReplicatedMergeTreeCleanupThread();
24 25

private:
26 27 28
    StorageReplicatedMergeTree & storage;
    Logger * log;
    std::thread thread;
29

30 31
    void run();
    void iterate();
32

F
f1yegor 已提交
33
    /// Remove old records from ZooKeeper.
34
    void clearOldLogs();
35

F
f1yegor 已提交
36
    /// Remove old block hashes from ZooKeeper. This makes a leading replica.
37
    void clearOldBlocks();
38

39 40 41 42 43 44
    class NodesStatCache;
    struct NodeWithStat;
    std::unique_ptr<NodesStatCache> cached_block_stats;

    /// Returns list of blocks with stat sorted by ctime
    void getBlocksSortedByTime(std::shared_ptr<zkutil::ZooKeeper> & zookeeper, std::vector<NodeWithStat> & timed_blocks);
45

F
f1yegor 已提交
46 47
    /// TODO Removing old quorum/failed_parts
    /// TODO Removing old nonincrement_block_numbers
48 49 50 51
};


}