Я развертываю приложение, в котором мне нужно хранить некоторые данные в кеше Ignite. Я использовал в памяти Ignite кеш. Вот конфигурация Ignite, которую я использовал:
<property name="cacheConfiguration">
<list>
<bean
class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="IGNITE_DATA" />
<property name="cacheMode" value="PARTITIONED" />
<property name="atomicityMode" value="ATOMIC" />
<property name="writeSync"
value="PRIMARY_SYNC" />
<property name="backups"
value="${IGNITE_CACHE_BACKUPS}" />
</bean>
</list>
</property>
Теперь, когда я развернул несколько экземпляров своего приложения и сохранил данные в кэше Ignite. Его разделяют между всеми экземплярами приложения.
Даже если какой-либо экземпляр отключается и через какое-то время запускается, он получает самые последние данные через синхронизацию кэша Ignite.
Но проблема возникает, когда все экземпляры приложений выключаются. Когда они появляются, данные исчезают, поскольку они не сохраняются. Для сохранения я использовал свойство dataStorageConfiguration и включил сохранение. Вот изменение, которое я добавил в конфигурацию Ignite:
<property name="dataStorageConfiguration">
<bean
class="org.apache.ignite.configuration.DataStorageConfiguration">
<!-- Enabling Apache Ignite Persistent Store. -->
<property name="defaultDataRegionConfiguration">
<bean
class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="persistenceEnabled" value="true" />
</bean>
</property>
<!-- Changing Write Ahead Log Mode. -->
<property name="storagePath" value="${IGNITE_BC_STORE_PATH}"/>
<property name="walMode" value="LOG_ONLY" />
</bean>
</property>
Теперь, когда я разверну свое приложение и попробую запустить Ignite из кода Java, как указано ниже:
log.info("Initializing IGNITE...");
ignite = Ignition.start(getClass().getResource(CONF_FILE));
Я получаю исключение каждый раз, когда заявляю, что экземпляр по умолчанию уже запущен. Пробовал несколько вещей, но не работал. Даже если я удаляю CacheConfiguration из Ignite Configuration и просто сохраняю dataStorageConfiguration, я все равно получаю ту же ошибку. Ошибка:
Caused by: class org.apache.ignite.IgniteCheckedException: Default Ignite instance has already been started.
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1141)
at org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:1076)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:962)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:881)
at org.apache.ignite.Ignition.start(Ignition.java:373)
Обычно эта ошибка возникает, когда мы пытаемся запустить несколько узлов Ignite под одной и той же JVM, но здесь я запускаю один узел на каждую JVM. Тогда тоже получаю ошибку.
Пожалуйста, поправьте меня, если я ошибаюсь.
Любая помощь здесь будет оценена.