diff --git a/logstash-core/src/main/java/org/logstash/Event.java b/logstash-core/src/main/java/org/logstash/Event.java index e1e9f4db1f2..b593f04f983 100644 --- a/logstash-core/src/main/java/org/logstash/Event.java +++ b/logstash-core/src/main/java/org/logstash/Event.java @@ -216,6 +216,17 @@ public void setField(final FieldReference field, final Object value) { throw new InvalidTagsTypeException(field, value); } + // Special handling for @timestamp field to ensure it's properly converted to Timestamp object + if (field.equals(FieldReference.TIMESTAMP_REFERENCE)) { + Timestamp parsedTimestamp = initTimestamp(value); + setTimestamp(parsedTimestamp == null ? Timestamp.now() : parsedTimestamp); + if (parsedTimestamp == null) { + tag(TIMESTAMP_FAILURE_TAG); + this.setField(TIMESTAMP_FAILURE_FIELD, value); + } + return; + } + switch (field.type()) { case FieldReference.META_PARENT: // ConvertedMap.newFromMap already does valuefication