当max-jobs-per-context值超过时,作业提交失败,并出现通用503错误

时间:2017-04-03 17:21:17

标签: apache-spark jersey spark-jobserver

我在配置文件中设置了context-per-jvm = true和max-jobs-per-context = 4。

我使用以下curl命令预先创建了上下文: curl -d "" 'http://jobserver:8090/contexts/test-context'

我使用以下curl命令提交作业: curl -d "" 'http://jobserver:8090/jobs?appName=test&classPath=com.xyz.Test&context=test-context'

使用上述命令提交4个作业后,提交第5个作业会给出以下回复:

{
  "status": "NO SLOTS AVAILABLE",
  "result": "Too many running jobs (4) for job context 'test-context'"
}

这是一个体面而有用的回应。

但是,当我使用Jersey API从我的Java程序提交作业时,第5个作业的作业提交失败,并且没有任何特定的错误消息,通用503异常。

以下是代码段:

public static void main(String[] args) {
        WebTarget resource = client.target("http://jobserver:8090/jobs?appName=test&classPath=com.xyz.Test&context=test-context");
        Response response = resource.request().post(Entity.json(""), Response.class);
        System.out.println("Response:" + response);
    }

输出: Response:InboundJaxrsResponse{context=ClientResponse{method=POST, uri=http://jobserver:8090/jobs?appName=test&classPath=com.xyz.Test&context=test-context, status=503, reason=Service Unavailable}} 这种不一致的原因是什么?我在Jersey API调用中遗漏了什么吗?

1 个答案:

答案 0 :(得分:0)

我能够使用以下方法获取特定的JSON响应:

response.readEntity(JSONObject.class)response.readEntity(String.class)