Repository: asterixdb Updated Branches: refs/heads/master 86f3908ba -> c1bd877b1
ASTERIXDB-1940: Report number of errors Change-Id: I2d7fbf351cc0fc21f47cf0b9d82a8b72bc5098e9 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1831 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> BAD: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Michael Blow <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/c1bd877b Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/c1bd877b Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/c1bd877b Branch: refs/heads/master Commit: c1bd877b183f6b634f0a9d9208ed70f4d4fc6946 Parents: 86f3908 Author: Till Westmann <[email protected]> Authored: Sat Jun 10 22:13:05 2017 -0700 Committer: Michael Blow <[email protected]> Committed: Mon Jun 12 10:06:00 2017 -0700 ---------------------------------------------------------------------- .../api/http/server/QueryServiceServlet.java | 16 ++++++++++++---- .../apache/asterix/test/common/ResultExtractor.java | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/c1bd877b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java index da04c52..ec90ae9 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java @@ -135,7 +135,8 @@ public class QueryServiceServlet extends AbstractQueryApiServlet { ELAPSED_TIME("elapsedTime"), EXECUTION_TIME("executionTime"), RESULT_COUNT("resultCount"), - RESULT_SIZE("resultSize"); + RESULT_SIZE("resultSize"), + ERROR_COUNT("errorCount"); private final String str; @@ -285,7 +286,8 @@ public class QueryServiceServlet extends AbstractQueryApiServlet { } private static void printMetrics(PrintWriter pw, long elapsedTime, long executionTime, long resultCount, - long resultSize) { + long resultSize, long errorCount) { + boolean hasErrors = errorCount != 0; pw.print("\t\""); pw.print(ResultFields.METRICS.str()); pw.print("\": {\n"); @@ -296,7 +298,11 @@ public class QueryServiceServlet extends AbstractQueryApiServlet { pw.print("\t"); ResultUtil.printField(pw, Metrics.RESULT_COUNT.str(), resultCount, true); pw.print("\t"); - ResultUtil.printField(pw, Metrics.RESULT_SIZE.str(), resultSize, false); + ResultUtil.printField(pw, Metrics.RESULT_SIZE.str(), resultSize, hasErrors); + if (hasErrors) { + pw.print("\t"); + ResultUtil.printField(pw, Metrics.ERROR_COUNT.str(), errorCount, false); + } pw.print("\t}\n"); } @@ -403,6 +409,7 @@ public class QueryServiceServlet extends AbstractQueryApiServlet { printClientContextID(resultWriter, param); printSignature(resultWriter); printType(resultWriter, sessionConfig); + long errorCount = 1; // so far we just return 1 error try { if (param.statement == null || param.statement.isEmpty()) { throw new AsterixException("Empty request, no statement provided"); @@ -412,6 +419,7 @@ public class QueryServiceServlet extends AbstractQueryApiServlet { if (ResultDelivery.IMMEDIATE == delivery || ResultDelivery.DEFERRED == delivery) { ResultUtil.printStatus(sessionOutput, ResultStatus.SUCCESS); } + errorCount = 0; } catch (AlgebricksException | TokenMgrError | org.apache.asterix.aqlplus.parser.TokenMgrError pe) { GlobalConfig.ASTERIX_LOGGER.log(Level.INFO, pe.getMessage(), pe); ResultUtil.printError(resultWriter, pe); @@ -435,7 +443,7 @@ public class QueryServiceServlet extends AbstractQueryApiServlet { } } printMetrics(resultWriter, System.nanoTime() - elapsedStart, execStartEnd[1] - execStartEnd[0], - stats.getCount(), stats.getSize()); + stats.getCount(), stats.getSize(), errorCount); resultWriter.print("}\n"); resultWriter.flush(); String result = stringWriter.toString(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/c1bd877b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java index 1d50c26..76b3510 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java @@ -74,6 +74,9 @@ public class ResultExtractor { break; case "errors": JsonNode errors = result.get(field).get(0).get("msg"); + if (!result.get("metrics").has("errorCount")) { + throw new AsterixException("Request reported error but not an errorCount"); + }; throw new AsterixException(errors.asText()); case "results": if (result.get(field).size() <= 1) {
