CacheManager is and iterface, при использовании CacheManager с hazelcast он использует HazelcastCacheManagerImpl.
Когда соединение с hazelcast по какой-либо причине сбрасывается или теряется, исключение, hazelcast завершается и т. Д. Внутреннее соединение hazelcast используется HazelcastCacheManagerстановится закрытым, и как только весь CacheManager становится закрытым, попытка получить определенный Cache из такого менеджера кэша и выполнить операцию r / w в таком кэше приведет к «java.lang.IllegalStateException: CacheManager / hz / уже закрыт».исключение.
Когда Hazelcast возвращается к жизни (повторно подключен или еще), вам необходимо вручную повторно подключить CacheManager к Hazelcast.Я поиграл с 3.5.7 версией hazelcast и для решения этой проблемы мы создали CacheManager в качестве прокси-компонента.
В случае, если мы обнаружим, что CacheManager потерял соединение с реальной частотой, мы начинаем попытки вручную переподключить CacheManager и вв случае успеха замените ссылки на CacheManager новыми.
Это вопрос о том, как повторно запускать пружинные бины во время выполнения.
Я предполагаю, что в вашем тесте у вас похожая ситуация во время тестового соединенияхз теряется, кеш закрывается.Даже если вы перезапустите hazelcast, но не переинициализируете компонент CacheManager - он может указывать на старое закрытое соединение hz и не будет переподключаться автоматически.
Если вы используете механизм @SpringBootTest, использование аннотации @ DirtiesContext можетпомогите, чтобы каждый тест заново инициировал весь контекст весны, поэтому, если в предыдущем тесте вы уничтожили соединение Hazelcast, перезапустите hz или что-то еще, в следующем тесте DirtiesContext вызовет повторную инициализацию CacheManger и поможет получить результаты тестов с повторяемостью.