提交 59fd4f9d 编写于 作者: A Alexey Milovidov

Attempt to fix an error with yielding leadership [#METR-20132].

上级 56b316bf
......@@ -395,7 +395,12 @@ public:
{
try
{
zookeeper.tryRemove(path);
/** Важно, что в случае недоступности ZooKeeper, делаются повторные попытки удалить ноду, пока не истечёт сессия.
* Иначе возможна ситуация, когда объект EphemeralNodeHolder уничтожен,
* но сессия восстановится в течние session timeout, и эфемерная нода в ZooKeeper останется ещё надолго.
* А это может сломать механизм leader election и блокировок.
*/
zookeeper.tryRemoveWithRetries(path);
}
catch (const KeeperException & e)
{
......
......@@ -72,7 +72,7 @@ void Lock::unlock()
}
catch (const zkutil::KeeperException & e)
{
/// если сессия находится в невостанавливаемом состоянии, то эфимерные ноды нам больше не принадлежат
/// если сессия находится в невостанавливаемом состоянии, то эфемерные ноды нам больше не принадлежат
/// и лок через таймаут будет отпущен
if (!e.isUnrecoverable())
throw;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册