Использование
- 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");