diff --git a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java index a94411bd739e531c9137362ed43278b1eb43bb4d..4a6c53d324b180046821c4a074b0f534834dfa07 100644 --- a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java +++ b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/synchro/AbstractSynchroAction.java @@ -523,7 +523,18 @@ public abstract class AbstractSynchroAction extends AbstractService implements S } // Check version - Number existingVersion = ((Number) existingFields.get(versionFieldName)); + Number existingVersion = null; + Object versionObj = existingFields.get(versionFieldName); + if (versionObj != null) { + if (versionObj instanceof String) { + existingVersion = Long.parseLong((String) versionObj); + } else if (versionObj instanceof Number) { + existingVersion = ((Number) versionObj); + } else { + throw new InvalidFormatException(String.format("Invalid document: '%s' should be a long, but found: %s", versionFieldName, versionObj)); + } + } + boolean doUpdate = (existingVersion == null || version > existingVersion.longValue()); if (doUpdate) {