У меня есть кэш
@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, если существующая строка обновлена.
И запись воспламенения в журнал ПРЕДУПРЕЖДАЕТ (это исходный код воспламенения):
if (updCnt != 1)
U.warn(log, "Unexpected number of updated entries [table=" + em.fullTableName() +
", entry=" + entry + "expected=1, actual=" + updCnt + "]");
Я считаю, что обновление записи является правильным поведением, и я не хочу видеть предупреждение вжурналы.Как я могу избежать этого?