Может ли бесконечное пассивирование использоваться вместе с выселением на основе памяти? - PullRequest
0 голосов
/ 30 октября 2019

Использование

  • JBoss 7.1.0 EAP
  • Infinispan 8.2.8.Final-redhat-1

Можно ли использовать пассивацию ивысвобождение из памяти с помощью infinispan?

Когда я пытаюсь использовать эту конфигурацию:

ConfigurationBuilder config = new ConfigurationBuilder();
config.clustering().cacheMode(CacheMode.DIST_SYNC);
config.eviction()
    .type(EvictionType.MEMORY) 
    .size(heapAllocationForCache);
config.persistence().passivation(true)
        .addSingleFileStore()
        .location("/path/to/cache-dir")
        .purgeOnStartup(true);

Когда я пробую эту конфигурацию, я получаю эту ошибку:

2019-10-30 11:28:59 INFO [] EvictionConfigurationBuilder: 114 - ISPN000152: Пассивация настроена без выбранной политики выселения. Только выселенные вручную объекты будут пассивированы.

Вот логика проверки:

if (!strategy.isEnabled()) {
   if (maxEntries > 0) {
      strategy(EvictionStrategy.LIRS);
      log.debugf("Max entries configured (%d) without eviction strategy. Eviction strategy overriden to %s", maxEntries, strategy);
   } else if (getBuilder().persistence().passivation() && strategy != EvictionStrategy.MANUAL) {
      log.passivationWithoutEviction(); // <--------- this line is where the warning comes from
   }
}

Не можете ли вы использовать выселение на основе памяти с пассивацией? Или это ошибка с проверкой на Infinispan 8.2.x?

Обратите внимание, что мы не можем установить

strategy(EvictionStrategy.LRU) и т. Д. Из-за этого кода:

https://github.com/infinispan/infinispan/blob/8.2.11.Final/core/src/main/java/org/infinispan/configuration/cache/EvictionConfigurationBuilder.java

if (strategy.isEnabled() && maxEntries <= 0)
         throw new CacheConfigurationException("Eviction maxEntries value cannot be less than or equal to zero if eviction is enabled");

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Поскольку вы используете EAP, я не буду использовать биты Infinispan внутри EAP, так как они не предназначены для использования в кеше приложения - также вы не можете обновить версию, так как это не поддерживается. Наилучший подход - использовать RHDG в качестве поддерживаемого продукта или (если вы не можете) использовать последнюю версию Infinispan, чтобы иметь полный набор функций и последние исправления. Также с 9.x yuo может использовать память вне кучи, которая часто обеспечивает более высокую производительность.

Подробнее об этом см. В этом посте Невозможно использовать встроенный кэш-менеджер Infinispan в JBoss EAP 7.2

0 голосов
/ 31 октября 2019

Вы должны быть в состоянии. Однако проблема в том, что в 8.2 стратегией по умолчанию является NONE [1]. Установка стратегии на LIRS или LRU должна исправить вашу проблему. В новых версиях Infinispan этот параметр больше не требуется, если только вы не хотите установить для него стратегию выселения MANUAL.

config.eviction()
   .type(EvictionType.MEMORY)
   .strategy(EvictionStrategy.LRU) 
   .size(heapAllocationForCache);

[1] https://github.com/infinispan/infinispan/blob/8.2.x/core/src/main/java/org/infinispan/configuration/cache/EvictionConfiguration.java#L19

...