clowder-framework / clowder

A data management system that allows users to share, annotate, organize and analyze large collections of datasets. It provides support for extensible metadata annotation using JSON-LD and a distribute analytics event bus for automatic curation of uploaded data.
https://clowderframework.org/
University of Illinois/NCSA Open Source License
34 stars 17 forks source link

timestamp 24:00:00 search got 500 error returned from clowder. #400

Open bingzhang opened 1 year ago

bingzhang commented 1 year ago

Describe the bug

sending search query with a timestamp of 24:00:00 got 500 from clowder. Because elastic search need hour value be in range of [0,23].

at org.elasticsearch.action.search.AbstractSearchAsyncAction.onFirstPhaseResult(AbstractSearchAsyncAction.java:206) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5]
at org.elasticsearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:152) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5]
at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:46) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5]
at org.elasticsearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:874) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5]
at org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:852) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5]
at org.elasticsearch.transport.TransportService$4.onFailure(TransportService.java:389) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5]

Caused by: org.elasticsearch.ElasticsearchParseException: failed to parse date field [2022-11-30T24:00:00] with format [strict_date_optional_time||epoch_millis] at org.elasticsearch.common.joda.DateMathParser.parseDateTime(DateMathParser.java:214) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5] at org.elasticsearch.common.joda.DateMathParser.parse(DateMathParser.java:67) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5] at org.elasticsearch.index.mapper.core.DateFieldMapper$DateFieldType.parseToMilliseconds(DateFieldMapper.java:457) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5] at org.elasticsearch.index.mapper.core.DateFieldMapper$DateFieldType.innerRangeQuery(DateFieldMapper.java:440) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5] at org.elasticsearch.index.mapper.core.DateFieldMapper$DateFieldType.access$000(DateFieldMapper.java:201) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5] at org.elasticsearch.index.mapper.core.DateFieldMapper$DateFieldType$LateParsingQuery.rewrite(DateFieldMapper.java:228) ~[org.elasticsearch.elasticsearch-2.3.5.jar:2.3.5] Caused by: java.lang.IllegalArgumentException: Cannot parse "2022-11-30T24:00:00": Value 24 for hourOfDay must be in the range [0,23]

To Reproduce /api/search/json endpoint. search timestamp metadata field with timestamp 24:00:00

Expected behavior A clear and concise description of what you expected to happen.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Smartphone (please complete the following information):

Additional context Add any other context about the problem here.