预测 IO 请求挂起
Prediction IO Request Hangs
我正在尝试使用类似以下内容查询已部署的 PredictionIO 引擎:
curl --max-time 2000 --connect-timeout 60 -H "Content-Type: application/json" \
-d '{
"ids": [
"AAAAAAAA-9999-4444-ACAC-18181818181818"
],
"other": "value"
}' \
但我只收到以下内容:
The server was not able to produce a timely response to your request
我知道这意味着请求正在被 Spray 接收(这是一条 Spray 超时消息),但出于某种原因,无论 request-timeout
有多长它都不会完成。
我的日志表明 predict
方法从未被调用,这表明 PredictionIO 请求处理程序逻辑中出现问题。
这确实是请求处理程序逻辑的问题,特别是查询反序列化到我的 Query
class。 There is a known json4s defect 防止反序列化具有类型别名的 Query
class。以下将产生无限循环:
object User {
type Id = Int
}
case class Query(ids: Seq[User.Id], other: String)
// This will never complete
org.json4s.jackson.Serialization.write(Query(Seq(1,2,3), "Hello World"))
删除类型别名 User.Id
并将其替换为 Int
将解决问题。
case class Query(ids: Seq[Int], other: String)
org.json4s.jackson.Serialization.write(Query(Seq(1,2,3), "Hello World"))
res0: String = {"users":[1,2,3],"other":"Hello World"}
我正在尝试使用类似以下内容查询已部署的 PredictionIO 引擎:
curl --max-time 2000 --connect-timeout 60 -H "Content-Type: application/json" \
-d '{
"ids": [
"AAAAAAAA-9999-4444-ACAC-18181818181818"
],
"other": "value"
}' \
但我只收到以下内容:
The server was not able to produce a timely response to your request
我知道这意味着请求正在被 Spray 接收(这是一条 Spray 超时消息),但出于某种原因,无论 request-timeout
有多长它都不会完成。
我的日志表明 predict
方法从未被调用,这表明 PredictionIO 请求处理程序逻辑中出现问题。
这确实是请求处理程序逻辑的问题,特别是查询反序列化到我的 Query
class。 There is a known json4s defect 防止反序列化具有类型别名的 Query
class。以下将产生无限循环:
object User {
type Id = Int
}
case class Query(ids: Seq[User.Id], other: String)
// This will never complete
org.json4s.jackson.Serialization.write(Query(Seq(1,2,3), "Hello World"))
删除类型别名 User.Id
并将其替换为 Int
将解决问题。
case class Query(ids: Seq[Int], other: String)
org.json4s.jackson.Serialization.write(Query(Seq(1,2,3), "Hello World"))
res0: String = {"users":[1,2,3],"other":"Hello World"}