diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java index 6f56b28e93759..7f8afa1ceec9d 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java @@ -518,7 +518,7 @@ protected void parseCreateField(ParseContext context) throws IOException { } else { try { timestamp = fieldType().parse(dateAsString); - } catch (IllegalArgumentException | ElasticsearchParseException | DateTimeException e) { + } catch (IllegalArgumentException | ElasticsearchParseException | DateTimeException | ArithmeticException e) { if (ignoreMalformed) { context.addIgnoredField(mappedFieldType.name()); return; diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java index ac0cd388f13a4..d95e0678254e4 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java @@ -167,9 +167,10 @@ public void testIgnoreMalformed() throws IOException { "failed to parse date field [2016-03-99] with format [strict_date_optional_time||epoch_millis]"); testIgnoreMalfomedForValue("-2147483648", "Invalid value for Year (valid values -999999999 - 999999999): -2147483648"); + testIgnoreMalfomedForValue("-522000000", "long overflow"); } - private void testIgnoreMalfomedForValue(String value, String expectedException) throws IOException { + private void testIgnoreMalfomedForValue(String value, String expectedCause) throws IOException { String mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type") .startObject("properties").startObject("field").field("type", "date").endObject().endObject() .endObject().endObject()); @@ -185,7 +186,9 @@ private void testIgnoreMalfomedForValue(String value, String expectedException) .endObject()), XContentType.JSON)); MapperParsingException e = expectThrows(MapperParsingException.class, runnable); - assertThat(e.getCause().getMessage(), containsString(expectedException)); + assertThat(e.getMessage(), containsString("failed to parse field [field] of type [date]")); + assertThat(e.getMessage(), containsString("Preview of field's value: '" + value + "'")); + assertThat(e.getCause().getMessage(), containsString(expectedCause)); mapping = Strings.toString(XContentFactory.jsonBuilder().startObject().startObject("type") .startObject("properties").startObject("field").field("type", "date")