Skip to content

Commit

Permalink
fix jackson max string length in backend http handler
Browse files Browse the repository at this point in the history
  • Loading branch information
patrick-schultz committed Jul 26, 2024
1 parent 4cf6293 commit 5f2cd60
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
2 changes: 1 addition & 1 deletion hail/src/main/scala/is/hail/backend/BackendServer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class BackendHttpHandler(backend: Backend) extends HttpHandler {
implicit val formats: Formats = DefaultFormats

try {
val body = using(exchange.getRequestBody)(JsonMethods.parse(_))
val body = using(exchange.getRequestBody)(parseJSON(_))
if (exchange.getRequestURI.getPath == "/execute") {
val config = body.extract[ExecutePayload]
backend.execute(config.ir, config.timed) { (ctx, res, timings) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -465,10 +465,7 @@ object ServiceBackendAPI {

implicit val formats: Formats = DefaultFormats

StreamReadConstraints.overrideDefaultStreamReadConstraints(
StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build()
);
val input = using(fs.openNoCompression(inputURL))(JsonMethods.parse(_))
val input = using(fs.openNoCompression(inputURL))(parseJSON(_))
val rpcConfig = (input \ "config").extract[ServiceBackendRPCPayload]

// FIXME: when can the classloader be shared? (optimizer benefits!)
Expand Down
16 changes: 11 additions & 5 deletions hail/src/main/scala/is/hail/utils/package.scala
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package is.hail

import com.fasterxml.jackson.core.StreamReadConstraints
import is.hail.annotations.ExtendedOrdering
import is.hail.check.Gen
import is.hail.expr.ir.ByteArrayBuilder
import is.hail.io.fs.{FS, FileListEntry}

import scala.collection.{mutable, GenTraversableOnce, TraversableOnce}
import scala.collection.{GenTraversableOnce, TraversableOnce, mutable}
import scala.collection.generic.CanBuildFrom
import scala.collection.mutable.ArrayBuffer
import scala.concurrent.ExecutionException
import scala.language.higherKinds
import scala.reflect.ClassTag
import scala.util.control.NonFatal

import java.io._
import java.lang.reflect.Method
import java.net.{URI, URLClassLoader}
Expand All @@ -25,7 +25,6 @@ import java.util.concurrent.{
ExecutorService, RunnableFuture, TimeUnit,
}
import java.util.concurrent.atomic.AtomicBoolean

import com.google.common.util.concurrent.AbstractFuture
import org.apache.commons.io.output.TeeOutputStream
import org.apache.commons.lang3.StringUtils
Expand All @@ -35,9 +34,9 @@ import org.apache.hadoop.mapreduce.lib.input.{FileSplit => NewFileSplit}
import org.apache.log4j.Level
import org.apache.spark.{Partition, TaskContext}
import org.apache.spark.sql.Row
import org.json4s.{Extraction, Formats, JObject, NoTypeHints, Serializer}
import org.json4s.{Extraction, Formats, JObject, JValue, JsonInput, NoTypeHints, Serializer}
import org.json4s.JsonAST.{JArray, JString}
import org.json4s.jackson.Serialization
import org.json4s.jackson.{JsonMethods, Serialization}
import org.json4s.reflect.TypeInfo

package utils {
Expand Down Expand Up @@ -527,6 +526,13 @@ package object utils

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

def parseJSON(in: JsonInput): JValue = {
StreamReadConstraints.overrideDefaultStreamReadConstraints(
StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build()
)
JsonMethods.parse(in)
}

def box(i: Int): java.lang.Integer = i

def box(l: Long): java.lang.Long = l
Expand Down

0 comments on commit 5f2cd60

Please sign in to comment.