infinispan 9 '<eviction strategy="LRU" />' недопустимый элемент
Тег выселения Wildfly 18 не анализирует, что дает ошибку конфигурации "Не удалось проанализировать". это произойдет, когда я обновлю Wildfly 11 до 18. В wildfly 11 (infinispan 4) он работает нормально
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="security" default-cache="auth-cache">
<local-cache name="auth-cache">
<locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/>
<eviction strategy="LRU" max-entries="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"/>
<expiration max-idle="-1"/>
</local-cache>
</cache-container>
</subsystem>
В Wildfly 18 с разделом ниже (НЕ РАБОТАЕТ)
<subsystem xmlns="urn:jboss:domain:infinispan:9.0">
<cache-container name="security" default-cache="auth-cache">
<local-cache name="auth-cache">
<locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/>
<eviction strategy="LRU" max-entries="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"/>
<expiration max-idle="-1"/>
</local-cache>
</cache-container>
</subsystem>
Его использование ^^^^ "выселение" здесь не разрешено. infinispan:9.4 он говорит, что выселение настраивается путем добавления, но даже это дает нераспознанную память тегов.
как добавить стратегию выселения =LRU или замену стратегии:"LRU"=?
2 ответа
Согласно документации в infinispan 9.0 выселение настраивается путем добавления элемента в разделы конфигурации <* - cache />. Выселение осуществляется Caffeine с использованием алгоритма TinyLFU с дополнительным окном допуска. Это было выбрано, поскольку оно обеспечивает высокую частоту совпадений, а также требует низких накладных расходов на память. Это обеспечивает лучшее соотношение попаданий, чем LRU, но при этом требует меньше памяти, чем LIRS. В целом есть два типа:
- COUNT (Этот тип выселения удаляет записи в зависимости от того, сколько их находится в кеше. Как только количество записей превышает размер, запись будет удалена, чтобы освободить место.
- ПАМЯТЬ - этот тип вытеснения оценивает, сколько каждая запись будет занимать в памяти, и удаляет запись, когда общий размер всех записей превышает настроенный размер. Этот тип работает только с примитивной оболочкой, типами String и byte [], поэтому, если требуются настраиваемые типы, вы должны включить storeAsBinary. Также выселение на основе MEMORY работает только с политикой LRU.
Думаю, вы определяете это так:
<cache-container name="security" default-cache="auth-cache">
<local-cache name="auth-cache">
<...your other options...>
<object-memory/>
</local-cache>
</cache-container>
ИЛИ
<binary-memory eviction-type="MEMORY/COUNT"/>
ИЛИ
off-heap-memory eviction-type="MEMORY/COUNT"/>
И вы всегда можете указать размер:
size="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"
Типы складов:
- object-memory (Сохраняет записи как объекты в куче Java. Это тип хранилища по умолчанию. Тип хранилища поддерживает только COUNT, поэтому вам не нужно явно указывать тип выселения. Политика=TinyLFU)
- двоичная память (хранит записи как байты [] в куче Java. Тип вытеснения: COUNT OR MEMORY. Policy=TinyLFU)
- off-heap-memory (Сохраняет записи в виде байтов [] в собственной памяти вне Java. Тип вытеснения: COUNT OR MEMORY. Policy=LRU)
Ответ Лонзака верен. Кроме того, вы можете просто использовать конфигурацию urn:jboss:domain:infinispan:4.0 из WildFly 9 в WildFly 19. WildFly автоматически обновит конфигурацию до эквивалента в текущей версии схемы.