我是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
。)
答案 0 :(得分:0)
有关此的策展人技术说明:https://cwiki.apache.org/confluence/display/CURATOR/TN7
给予策展人食谱的任何路径都归该食谱所有。不要将它用于其他事情。
(注意:我是策展人的主要作者)。