Skip to content

Commit 0dd5726

Browse files
fix jackson max string length in backend http handler
1 parent 4cf6293 commit 0dd5726

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

hail/src/main/scala/is/hail/backend/BackendServer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class BackendHttpHandler(backend: Backend) extends HttpHandler {
8282
implicit val formats: Formats = DefaultFormats
8383

8484
try {
85-
val body = using(exchange.getRequestBody)(JsonMethods.parse(_))
85+
val body = using(exchange.getRequestBody)(parseJSON(_))
8686
if (exchange.getRequestURI.getPath == "/execute") {
8787
val config = body.extract[ExecutePayload]
8888
backend.execute(config.ir, config.timed) { (ctx, res, timings) =>

hail/src/main/scala/is/hail/backend/service/ServiceBackend.scala

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,9 @@ import java.io._
3131
import java.nio.charset.StandardCharsets
3232
import java.util.concurrent._
3333

34-
import com.fasterxml.jackson.core.StreamReadConstraints
3534
import org.apache.log4j.Logger
3635
import org.json4s.{DefaultFormats, Formats}
3736
import org.json4s.JsonAST._
38-
import org.json4s.jackson.JsonMethods
3937

4038
class ServiceBackendContext(
4139
val billingProject: String,
@@ -465,10 +463,7 @@ object ServiceBackendAPI {
465463

466464
implicit val formats: Formats = DefaultFormats
467465

468-
StreamReadConstraints.overrideDefaultStreamReadConstraints(
469-
StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build()
470-
);
471-
val input = using(fs.openNoCompression(inputURL))(JsonMethods.parse(_))
466+
val input = using(fs.openNoCompression(inputURL))(parseJSON(_))
472467
val rpcConfig = (input \ "config").extract[ServiceBackendRPCPayload]
473468

474469
// FIXME: when can the classloader be shared? (optimizer benefits!)

hail/src/main/scala/is/hail/utils/package.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import java.util.concurrent.{
2626
}
2727
import java.util.concurrent.atomic.AtomicBoolean
2828

29+
import com.fasterxml.jackson.core.StreamReadConstraints
2930
import com.google.common.util.concurrent.AbstractFuture
3031
import org.apache.commons.io.output.TeeOutputStream
3132
import org.apache.commons.lang3.StringUtils
@@ -35,9 +36,9 @@ import org.apache.hadoop.mapreduce.lib.input.{FileSplit => NewFileSplit}
3536
import org.apache.log4j.Level
3637
import org.apache.spark.{Partition, TaskContext}
3738
import org.apache.spark.sql.Row
38-
import org.json4s.{Extraction, Formats, JObject, NoTypeHints, Serializer}
39+
import org.json4s.{Extraction, Formats, JObject, JValue, JsonInput, NoTypeHints, Serializer}
3940
import org.json4s.JsonAST.{JArray, JString}
40-
import org.json4s.jackson.Serialization
41+
import org.json4s.jackson.{JsonMethods, Serialization}
4142
import org.json4s.reflect.TypeInfo
4243

4344
package utils {
@@ -527,6 +528,13 @@ package object utils
527528

528529
val defaultJSONFormats: Formats = Serialization.formats(NoTypeHints) + GenericIndexedSeqSerializer
529530

531+
def parseJSON(in: JsonInput): JValue = {
532+
StreamReadConstraints.overrideDefaultStreamReadConstraints(
533+
StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build()
534+
)
535+
JsonMethods.parse(in)
536+
}
537+
530538
def box(i: Int): java.lang.Integer = i
531539

532540
def box(l: Long): java.lang.Long = l

0 commit comments

Comments
 (0)