From c76a219a7d8de3adbd3bcd594f4294dd22d599f5 Mon Sep 17 00:00:00 2001 From: blavenie <benoit.lavenier@e-is.pro> Date: Tue, 8 Jan 2019 13:07:09 +0100 Subject: [PATCH] [fix] Error on user/profile document : string value for 'time' cause an synchro error - fix #37 --- .../synchro/AbstractSynchroAction.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 a94411bd..4a6c53d3 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) { -- GitLab