2016-02-11 6 views
0

Мы используем использование Hibernate Search 3.4.2 Final и EHCACHE 2.3.1 в одном из наших приложений. Данные, индексированные с помощью Hibernate Search, доступны только для чтения. По соображениям производительности мы загружаем полные данные в кеш второго уровня.Сброс кэша второго уровня спящего режима

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

Есть ли у кого презумпция? Есть ли вероятность, что использование Hibernate Search внутри транзакции с откатом может привести к такому поведению?

Edit1:

Это наша конфигурация Ehcache:

<ehcache updateCheck="false"> 
    <diskStore path="java.io.tmpdir/ds42" /> 

    <defaultCache maxElementsInMemory="200000" eternal="true" 
       statistics="true" overflowToDisk="true" diskPersistent="false" 
       diskExpiryThreadIntervalSeconds="3600" memoryStoreEvictionPolicy="LRU"/> 
</ehcache> 
+0

Может ли это быть только размер кеша, т. Е. Данные становятся слишком большими (возможно, некоторые другие данные в том же кеше), из-за чего кеш что-то уронит? – Thomas

+0

Я не эксперт по Hibernate Search, но мы его используем, и AFAIK он только читает объекты, поэтому он не должен влиять на кеш второго уровня. – Thomas

+1

звучит как журнал судебной работы – nolexa

ответ

0

Ответ на этот "удивительный" поведение можно найти в this article.

Добавить

query.unwrap(org.hibernate.SQLQuery.class).addSynchronizedQuerySpace(""); 

предотвратить Hibernate от очистки кэша второго уровня.

 Смежные вопросы

  • Нет связанных вопросов^_^