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 автоматически обновит конфигурацию до эквивалента в текущей версии схемы.

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