0

我是 ZooKeeper 的新手,但在帮助同事调试生产问题时,我们发现了一些相当出乎意料的事情。我们系统中的现有代码使用 Curator InterProcessMutex。该应用程序使用路径创建锁,例如/TEST/ABC. 然后代码的另一部分使用路径创建更多锁,/TEST/ABC/[some integer]而整数是通过 UI 输入的一些对象 ID。这已经工作了几个月,直到最近它突然停止工作。

我们进行了线程转储,发现线程在尝试获取带有路径的锁时被阻塞,TEST/ABC事实证明,每当/TEST/ABC/0000创建路径时就会发生这种情况(0 的数量无关紧要,只要它只包含零)。显然,某天某个测试人员决定在系统中输入一些虚假 ID,从而导致系统停止运行。我们已经解决了这个问题,但我很好奇是否有人可以解释为什么会这样?

问题:为什么锁定TEST/ABC/0000与锁定相同TEST/ABC
(零的数量实际上并不重要,任何都映射到TEST/ABC。)

4

1 回答 1

0

对此有一个策展人技术说明:https ://cwiki.apache.org/confluence/display/CURATOR/TN7

提供给 Curator 配方的任何路径都归该配方所有。请勿将其用于其他用途。

(注:我是策展人的主要作者)。

于 2014-08-14T18:21:54.330 回答