rabbah commented on a change in pull request #2218: Port Controller from Spray to Akka URL: https://github.com/apache/incubator-openwhisk/pull/2218#discussion_r132813987
########## File path: common/scala/src/main/scala/whisk/http/BasicHttpService.scala ########## @@ -86,39 +94,58 @@ trait BasicHttpService extends HttpService with TransactionCounter { */ def loglevelForRoute(route: String): Logging.LogLevel = Logging.InfoLevel + /** Rejection handler to terminate connection on a bad request. Delegates to Akka handler. */ + val prioritizeRejections = recoverRejections { rejections => + val priorityRejection = rejections.find(_.isInstanceOf[UnacceptedResponseContentTypeRejection]).getOrElse(null) + + if (priorityRejection != null) { + Rejected(Seq(priorityRejection)) + } else { + Rejected(rejections) + } + } + + val toStrict = mapInnerRoute { innerRoute => + extractRequest { req => + onSuccess(req.toStrict(1.second)) { strictReq => + mapRequest(_ => strictReq) { + innerRoute + } + } + } + } + /** * Receives a message and runs the router. */ - def receive = runRoute( + def route: Route = { assignId { implicit transid => - DebuggingDirectives.logRequest(logRequestInfo _) { - DebuggingDirectives.logRequestResponse(logResponseInfo _) { - routes + handleRejections(customRejectionHandler) { + prioritizeRejections { + DebuggingDirectives.logRequest(logRequestInfo _) { + DebuggingDirectives.logRequestResult(logResponseInfo _) { + toStrict { + routes + } + } + } } } - }) + } + } + + def receive = { + case _ => + } Review comment: i'm fairly sure we can eliminate this but it's a bit of a change - I'll send a PR against your branch or we can deal with it later. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services