Имя пути блокировки куратора, содержащее только символы "0"

Я новичок в ZooKeeper, но, помогая коллеге отладить производственную проблему, мы нашли что-то довольно неожиданное. Существующий код в нашей системе использует куратор InterProcessMutex. Приложение создает блокировку с путем, скажем, /TEST/ABC, Затем другая часть кода создает больше блокировок с путем, как /TEST/ABC/[some integer] в то время как целые числа - это некоторые идентификаторы объектов, которые вводятся через пользовательский интерфейс. Это работало в течение нескольких месяцев, пока в последнее время внезапно не перестало работать.

Мы взяли дамп потока и обнаружили, что поток блокируется при попытке получить блокировку с путем TEST/ABC и оказывается, что это происходит всякий раз, когда путь /TEST/ABC/0000 создается (количество нулей не имеет значения, если оно содержит только нули). Очевидно, один тестер однажды решил ввести в систему несколько поддельных идентификаторов, которые остановили систему. Мы исправили это, но мне любопытно, может кто-нибудь пролить свет на то, почему это так?

Вопрос: почему блокировка TEST/ABC/0000 так же, как блокировка TEST/ABC?
(Количество нулей на самом деле не имеет значения, что-либо отображается на TEST/ABC .)

1 ответ

На это есть Техническая записка куратора: https://cwiki.apache.org/confluence/display/CURATOR/TN7

Любой путь, указанный в рецепте куратора, принадлежит этому рецепту. Не используйте его для других вещей.

(ПРИМЕЧАНИЕ: я главный автор куратора).

Другие вопросы по тегам