Till Westmann has submitted this change and it was merged. Change subject: set HTTP status code before writing the result ......................................................................
set HTTP status code before writing the result Change-Id: I46adb4aeaaa1ada6669b7535bb6d0879a26bc319 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1134 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Michael Blow <[email protected]> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/QueryServiceServlet.java M asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java 2 files changed, 17 insertions(+), 13 deletions(-) Approvals: Michael Blow: Looks good to me, approved Jenkins: Verified; No violations found; Verified diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/QueryServiceServlet.java index b4097d1..3b69dd1 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/QueryServiceServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/QueryServiceServlet.java @@ -342,7 +342,7 @@ printField(pw, ErrorField.CODE.str(), "1"); final String msg = rootCause.getMessage(); printField(pw, ErrorField.MSG.str(), - JSONUtil.escape(rootCause.getClass().getName() + ": " + msg != null ? msg : ""), addStack); + JSONUtil.escape(rootCause.getClass().getName() + ": " + (msg != null ? msg : "")), addStack); if (addStack) { StringWriter sw = new StringWriter(); PrintWriter stackWriter = new PrintWriter(sw); @@ -453,10 +453,10 @@ GlobalConfig.ASTERIX_LOGGER.log(Level.SEVERE, result); + response.setStatus(respCode); response.getWriter().print(result); if (response.getWriter().checkError()) { LOGGER.warning("Error flushing output writer"); } - response.setStatus(respCode); } } diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java index 3e16802..52237d8 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java @@ -250,21 +250,25 @@ } } + protected HttpResponse executeAndCheckHttpRequest(HttpUriRequest method) throws Exception { + return checkResponse(executeHttpRequest(method)); + } + protected HttpResponse executeHttpRequest(HttpUriRequest method) throws Exception { HttpClient client = HttpClients.custom() .setRetryHandler(StandardHttpRequestRetryHandler.INSTANCE) .build(); - HttpResponse httpResponse; - try { - httpResponse = client.execute(method); + return client.execute(method); } catch (Exception e) { GlobalConfig.ASTERIX_LOGGER.log(Level.SEVERE, e.getMessage(), e); e.printStackTrace(); throw e; } - int statusCode = httpResponse.getStatusLine().getStatusCode(); - if (statusCode != HttpStatus.SC_OK) { + } + + protected HttpResponse checkResponse(HttpResponse httpResponse) throws Exception { + if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { // QQQ For now, we are indeed assuming we get back JSON errors. // In future this may be changed depending on the requested // output format sent to the servlet. @@ -294,7 +298,7 @@ HttpUriRequest method = constructHttpMethod(str, url, "query", false, params); // Set accepted output response type method.setHeader("Accept", fmt.mimeType()); - HttpResponse response = executeHttpRequest(method); + HttpResponse response = executeAndCheckHttpRequest(method); return response.getEntity().getContent(); } @@ -368,7 +372,7 @@ public InputStream executeClusterStateQuery(OutputFormat fmt, String url) throws Exception { HttpUriRequest request = RequestBuilder.get(url).setHeader("Accept", fmt.mimeType()).build(); - HttpResponse response = executeHttpRequest(request); + HttpResponse response = executeAndCheckHttpRequest(request); return response.getEntity().getContent(); } @@ -381,7 +385,7 @@ .build(); // Execute the method. - executeHttpRequest(request); + executeAndCheckHttpRequest(request); } // Executes AQL in either async or async-defer mode. @@ -393,7 +397,7 @@ .setHeader("Accept", fmt.mimeType()) .build(); - HttpResponse response = executeHttpRequest(request); + HttpResponse response = executeAndCheckHttpRequest(request); InputStream resultStream = response.getEntity().getContent(); String theHandle = IOUtils.toString(resultStream, "UTF-8"); @@ -412,7 +416,7 @@ .setHeader("Accept", fmt.mimeType()) .build(); - HttpResponse response = executeHttpRequest(request); + HttpResponse response = executeAndCheckHttpRequest(request); return response.getEntity().getContent(); } @@ -429,7 +433,7 @@ .build(); // Execute the method. - executeHttpRequest(request); + executeAndCheckHttpRequest(request); } // Method that reads a DDL/Update/Query File -- To view, visit https://asterix-gerrit.ics.uci.edu/1134 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I46adb4aeaaa1ada6669b7535bb6d0879a26bc319 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
