Infinispan 9.1: неподдерживаемый режим асинхронного кэша 'REPL_ASYNC' для транзакционных кешей
Я перевожу проект на Infinispan 9.1.0.Final из 8.2.4.Final и получил следующее исключение:
org.infinispan.commons.CacheConfigurationException: ISPN000441: неподдерживаемый режим асинхронного кэша 'REPL_ASYNC' для транзакционных кэшей
Связанный код:
new ConfigurationBuilder()
.jmxStatistics()
.enabled(false)
.available(false)
.clustering()
.cacheMode(CacheMode.REPL_ASYNC)
.stateTransfer().awaitInitialTransfer(false)
.transaction()
.transactionManagerLookup(new DummyTransactionManagerLookup())
.transactionMode(TransactionMode.TRANSACTIONAL)
.lockingMode(LockingMode.PESSIMISTIC)
.recovery()
.enabled(false)
.invocationBatching()
.enable(false)
.indexing()
.index(Index.ALL)
.addProperty("default.indexmanager", "near-real-time")
.addProperty("default.directory_provider", "ram")
.addProperty("default.worker.execution", "sync")
.addProperty("default.exclusive_index_use", "true")
.addProperty("default.reader.strategy", "shared")
.build();
И комбинация проблем здесь, но в 8.2.4. Окончательная версия это работает хорошо.
.cacheMode(CacheMode.REPL_ASYNC)
.transactionMode(TransactionMode.TRANSACTIONAL) // Maybe is there another way to lock put operations?
Как мне перенастроить кеш, чтобы сохранить его характеристики?
1 ответ
Асинхронный режим для транзакционных кешей был небезопасным, поскольку он не ожидал фиксации транзакции на каждом узле кластера, прежде чем сообщать об этом TransactionManager
, Это может сделать ваши данные непоследовательными, если вам не повезло.
Чтобы избежать каких-либо проблем, он был удален. Пожалуйста, обновите вашу конфигурацию, чтобы использовать REPL_SYNC
вместо.
Так же DummyTransactionManagerLookup
устарела и должна быть заменена EmbeddedTransactionManagerLookup
,
Существуют другие изменения, связанные с транзакциями, между 8.x и 9.x. Пожалуйста, ознакомьтесь с руководством по обновлению ( http://infinispan.org/docs/stable/upgrading/upgrading.html) для получения более подробной информации.