Запрет тайм-аута сеанса узла с Jetty 8 и реплицированных сеансов через MongoDB

Я использую Jetty 8 и в настоящее время у меня есть два экземпляра, настроенных и работающих за балансировщиком нагрузки с циклическим перебором Я настроил его использовать репликацию сессии через MongoDB. Он отлично работает с двумя исключениями. Я включу одно здесь, а другое в другой вопрос.

  1. Возможно, что сеанс на одном из узлов будет поддерживаться, в то время как тот же сеанс на другом узле истекает. Как только вы попадаете на узел с истекшим сроком действия, поведение будет таким, как если бы сеанс истек, несмотря на то, что пользователь выполнял действия на другом узле.

У кого-нибудь есть предложения? Я собираюсь начать копаться в реализации jetty-nosql, но был бы рад, если бы кто-то смог сэкономить мне время.

1 ответ

Решение

Оказывается, что указанное выше поведение связано с ошибкой в ​​менеджере nosqlSession. Он не обновляет время последнего доступа при чтении сеанса из базы данных. Таким образом, если к узлу не был получен доступ в течение периода ожидания сеанса, он сделает недействительным сеанс независимо от того, был ли получен доступ к какому-либо другому узлу. Я подал этот отчет об ошибке: https://bugs.eclipse.org/bugs/show_bug.cgi?id=397193

Мы исправили это путем внесения пользовательских изменений в файлы, указанные в сообщении об ошибке, чтобы время доступа к сеансу обновлялось временем доступа, сохраненным в базе данных, когда сеанс обновлялся из базы данных.

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