Ehcache уважает serialVersionUID? - PullRequest
       11

Ehcache уважает serialVersionUID?

4 голосов
/ 18 августа 2011

Мы запускаем ehcache 1.5 в кластере с репликацией RMI и обновляем серверы один за другим (вспомним балансировщик нагрузки / прокси-сервер в верхней части и обновления без простоя).

Нас, как правило, не волнует serialVersionUID. Проблема в том, что очень плохие вещи (вплоть до простоя) могут произойти, если у вас есть две версии объекта в реплицированном кэше. То есть, если один из серверов, на которых работает старый код, реплицирует элемент на новый сервер, где его класс был изменен.

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

Итак, вопрос: правильно ли кластеризованный реплицируемый ehcache serialVersionUID? То есть он не пытается копировать сущности, если версия локального класса отличается?

Спасибо за интуитивные догадки, но я ищу как можно более точные данные, предпочтительнее официальные документы.

1 Ответ

2 голосов
/ 20 августа 2011

Ehcache не поддерживает serialVersionUID, как вы предлагаете.Я испытал сценарий, который вы описали выше, из первых рук при запуске Ehcache, как автономного, так и распространяемого через Terracotta, где исключение будет выдано клиенту, если идентификаторы версий UID не совпадают.

В идеале (и я предполагаю, что это то, что вы ищете) объекты, не соответствующие serialVersionUID, просто пропустят кэш, но, к сожалению, это не поддерживается.

Если вы ищете немного более изящныйВ качестве решения этой проблемы попробуйте изменить имя области кэша при изменении кэшированной сущности, возможно, связав ее с serialVersionUID.Вам нужно будет обновить файл конфигурации ehcache, чтобы добавить новую область кэша, однако это заставит ресурсы запрашивать объекты только из кэшей, содержащих версию, которую они поддерживают.Это большая помощь в распределенных средах, где вы не можете обновлять все ресурсы новыми версиями одновременно и не хотите истечь срок действия кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...