mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
zookeeper: add createOrUpdate method [#METR-15514]
This commit is contained in:
parent
4463a747da
commit
67944de74e
@ -126,6 +126,9 @@ public:
|
||||
void set(const std::string & path, const std::string & data,
|
||||
int32_t version = -1, Stat * stat = nullptr);
|
||||
|
||||
/** Создает ноду, если ее не существует. Иначе обновляет */
|
||||
void createOrUpdate(const std::string & path, const std::string & data, int32_t mode);
|
||||
|
||||
/** Не бросает исключение при следующих ошибках:
|
||||
* - Такой ноды нет.
|
||||
* - У ноды другая версия.
|
||||
|
@ -418,6 +418,17 @@ void ZooKeeper::set(const std::string & path, const std::string & data, int32_t
|
||||
check(trySet(path, data, version, stat), path);
|
||||
}
|
||||
|
||||
void ZooKeeper::createOrUpdate(const std::string & path, const std::string & data, int32_t mode)
|
||||
{
|
||||
int code = trySet(path, data, -1);
|
||||
if (code == ZNONODE)
|
||||
{
|
||||
create(path, data, mode);
|
||||
}
|
||||
else
|
||||
throw zkutil::KeeperException(code, path);
|
||||
}
|
||||
|
||||
int32_t ZooKeeper::trySet(const std::string & path, const std::string & data,
|
||||
int32_t version, Stat * stat_)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user