Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/6222#discussion_r199248513 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/job/JobSubmitHandler.java --- @@ -66,6 +67,9 @@ public JobSubmitHandler( } return gateway.submitJob(jobGraph, timeout) - .thenApply(ack -> new JobSubmitResponseBody("/jobs/" + jobGraph.getJobID())); + .thenApply(ack -> new JobSubmitResponseBody("/jobs/" + jobGraph.getJobID())) + .exceptionally(exception -> { + throw new CompletionException(new RestHandlerException("Job submission failed.", HttpResponseStatus.INTERNAL_SERVER_ERROR, exception)); --- End diff -- I'm not quite fond of the idea. As alluded in the PR description and JIRA I agree that the existing error message isn't _helpful_, yet better than the current state. I rather like that so far the REST API has control over the error messages. This ensures that the user only sees messages that were actually meant for him. In contrast, exception messages are pretty much arbitrary. They may change at will, the audience isn't defined (user vs dev), may only helpful if the fully stack trace is present, often don't have any message at all (see usages of `Preconditions`, or NPEs) and typically only describe what went wrong, not why, how to fix it or if it even was a user-error. Given that this would break down the barrier between internal/user-facing messages you obviously also run into cases where users have _no idea_ what the message even means. Finally you end up with mismatches between the error message and error code. To me the underlying issue is that `submitJob` funnels all manner of exceptions into a `FlinkException/JobSubmissionException` that we can't do much with. Neither can we categorize them in any way, nor distinguish between who's responsible (user vs Flink) nor when in the process the failure occurred. Without diving into the implementation you don't _even know which exceptions are thrown_, but i suppose this is a general issue of `CompletableFutures`.
---