Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache zookeeper 馆长/动物园管理员锁清理_Apache Zookeeper_Apache Curator - Fatal编程技术网

Apache zookeeper 馆长/动物园管理员锁清理

Apache zookeeper 馆长/动物园管理员锁清理,apache-zookeeper,apache-curator,Apache Zookeeper,Apache Curator,我正在使用进程间信号量emutex来实现分布式锁定 锁的典型路径可能是 /锁定/日历/uuid 其中uuid当然是uuid,因此可能会生成许多锁路径 我假设这些路径最终需要清理,所以我尝试在解锁锁后使用childreaper和reaper进行清理 “收割者”这类作品。如果我添加/lock/calendar/uuid,它会愉快地删除孩子。日志显示它删除了租约和锁,并且节点本身在zkClient中显示为不存在,但是突然它开始在一个看似无休止的循环中抱怨路径不存在了。尽管尝试了Mode.Delete和

我正在使用进程间信号量emutex来实现分布式锁定

锁的典型路径可能是

/锁定/日历/uuid

其中uuid当然是uuid,因此可能会生成许多锁路径

我假设这些路径最终需要清理,所以我尝试在解锁锁后使用childreaper和reaper进行清理

“收割者”这类作品。如果我添加/lock/calendar/uuid,它会愉快地删除孩子。日志显示它删除了租约和锁,并且节点本身在zkClient中显示为不存在,但是突然它开始在一个看似无休止的循环中抱怨路径不存在了。尽管尝试了Mode.Delete和Mode

收割者什么也不做,可能是因为/lock/calendar/uuid有子对象


我错过什么了吗?我不需要清理这些锁吗?在并发方面,我需要担心什么。

收割机的步骤必须如下所示

  • 创建收割者(指定阈值时间。默认值为5分钟)
  • 启动收割器
  • 添加路径
  • Thread.wait(//时间超过阈值)
  • 近距离收割机
  • 如果您现在检查zookeeper,节点将被删除

    注意:这仅适用于路径为空时的叶节点


    附言:收割机不适合我。如果您可以在评论或问题中列出您用于child reaper的步骤,这将非常有用。

    reaper不适用于进程间SemaphoreMutex,因为它将有子进程(锁、收据IIRC)。ChildReaper确实部分工作,但随后开始抱怨失去父母。这是一个已知的bug,目前已在2.7.1之后修复(尚未发布)。如果可重入性是可接受的,一种解决方法是将ChildReaper与进程间锁一起使用。

    进程间SemaphoreMutex会创建额外的子节点,如租约、锁等。对于这种特殊类型的锁,我的解决方法是添加额外的路径
    /lock/path/leaves
    /lock/path/locks
    ,当您获得锁时,请将其发送给收割机。

    如果您使用最新的ZooKeeper 3.5.x和最新的策展人,策展人将为其所有配方使用“容器”节点,并根据需要自动清理这些节点。馆长的收割者已经被弃用了