У меня есть кеш
@Bean
CacheConfiguration persistenceCacheConfiguration(
CacheJdbcPojoStoreFactory<Long, SequencesEntity> storeFactory) {
CacheConfiguration<Long, SequencesEntity> configuration = new CacheConfiguration<>(
PERSISTENCE_CACHE_NAME);
configuration.setIndexedTypes(Long.class, SequencesEntity.class);
configuration.setReadThrough(true);
configuration.setWriteThrough(true);
configuration.setCacheStoreFactory(storeFactory);
configuration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
return configuration;
}
и я использую базу данных MySQL.
Когда я обновляю данные в кеше, Ignite выполняет следующий метод и запрос:
CacheAbstractJdbcStore.write
Запрос:
INSERT INTO table (id, stream_name, value) VALUES (1,'my',100000000001) ON DUPLICATE KEY UPDATE stream_name = VALUES(stream_name), value = VALUES(value)
Он возвращает 2 строки. Правильно - https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
С ON DUPLICATE KEY UPDATE значение затронутых строк в строке равно 1, если строка вставляется как новая строка и 2, если существующая строка обновляется.
И ignite записывает в журнал WARN (он воспламеняет исходный код):
if (updCnt != 1)
U.warn(log, "Unexpected number of updated entries [table=" + em.fullTableName() +
", entry=" + entry + "expected=1, actual=" + updCnt + "]");
Я считаю, что обновление записи является правильным поведением, и я не хочу видеть предупреждение в журналах. Как я могу избежать этого?
Это похоже на ошибку. Подал заявку https://issues.apache.org/jira/browse/IGNITE-8550. Помимо этого, я могу только предложить вам проигнорировать это предупреждение.