diff --git a/atlas-json/src/main/scala/com/netflix/atlas/json/JsonParserHelper.scala b/atlas-json/src/main/scala/com/netflix/atlas/json/JsonParserHelper.scala index aed6199e4..a92611a08 100644 --- a/atlas-json/src/main/scala/com/netflix/atlas/json/JsonParserHelper.scala +++ b/atlas-json/src/main/scala/com/netflix/atlas/json/JsonParserHelper.scala @@ -17,7 +17,6 @@ package com.netflix.atlas.json import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.core.JsonToken -import com.fasterxml.jackson.core.io.doubleparser.JavaDoubleParser object JsonParserHelper { @@ -94,11 +93,16 @@ object JsonParserHelper { parser.nextToken() match { case VALUE_NUMBER_INT => parser.getValueAsDouble case VALUE_NUMBER_FLOAT => parser.getValueAsDouble - case VALUE_STRING => JavaDoubleParser.parseDouble(parser.getText) + case VALUE_STRING => parseDouble(parser.getText) case t => fail(parser, s"expected VALUE_NUMBER_FLOAT but received $t") } } + private def parseDouble(v: String): Double = { + // Common case for string encoding is NaN + if (v == "NaN") Double.NaN else java.lang.Double.parseDouble(v) + } + def foreachItem[T](parser: JsonParser)(f: => T): Unit = { requireNextToken(parser, JsonToken.START_ARRAY) var t = parser.nextToken() diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 8589bdf99..ce1466f4e 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -7,7 +7,7 @@ object Dependencies { val pekko = "1.0.3" val pekkoHttpV = "1.0.1" val iep = "5.0.26" - val jackson = "2.17.2" + val jackson = "2.18.0" val log4j = "2.24.1" val scala = "2.13.15" val slf4j = "2.0.16"