mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 03:12:43 +00:00
46 lines
1.0 KiB
C++
46 lines
1.0 KiB
C++
#pragma once
|
||
|
||
#include <thread>
|
||
#include <zkutil/Types.h>
|
||
#include <DB/Core/Types.h>
|
||
#include <common/logger_useful.h>
|
||
|
||
|
||
namespace DB
|
||
{
|
||
|
||
class StorageReplicatedMergeTree;
|
||
|
||
|
||
/** Следит за изменением структуры таблицы в ZooKeeper и выполняет необходимые преобразования.
|
||
*
|
||
* NOTE Это не имеет отношения к манипуляциям с партициями,
|
||
* которые обрабатываются через очередь репликации.
|
||
*/
|
||
class ReplicatedMergeTreeAlterThread
|
||
{
|
||
public:
|
||
ReplicatedMergeTreeAlterThread(StorageReplicatedMergeTree & storage_);
|
||
|
||
~ReplicatedMergeTreeAlterThread()
|
||
{
|
||
need_stop = true;
|
||
wakeup_event->set();
|
||
if (thread.joinable())
|
||
thread.join();
|
||
}
|
||
|
||
private:
|
||
void run();
|
||
|
||
StorageReplicatedMergeTree & storage;
|
||
Logger * log;
|
||
|
||
zkutil::EventPtr wakeup_event { std::make_shared<Poco::Event>() };
|
||
std::atomic<bool> need_stop { false };
|
||
|
||
std::thread thread;
|
||
};
|
||
|
||
}
|