From: <tho...@us...> - 2012-03-29 18:35:19
|
Revision: 6215 http://bigdata.svn.sourceforge.net/bigdata/?rev=6215&view=rev Author: thompsonbry Date: 2012-03-29 18:35:12 +0000 (Thu, 29 Mar 2012) Log Message: ----------- Slight refinement in error handling for EXPLAIN Modified Paths: -------------- branches/BIGDATA_RELEASE_1_1_0/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/QueryServlet.java Modified: branches/BIGDATA_RELEASE_1_1_0/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/QueryServlet.java =================================================================== --- branches/BIGDATA_RELEASE_1_1_0/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/QueryServlet.java 2012-03-29 18:29:04 UTC (rev 6214) +++ branches/BIGDATA_RELEASE_1_1_0/bigdata-sails/src/java/com/bigdata/rdf/sail/webapp/QueryServlet.java 2012-03-29 18:35:12 UTC (rev 6215) @@ -705,11 +705,18 @@ } assert queryId2 != null; - /* - * Build the explanation. - * - * Note: The query may still be executing while we do this. - */ + /* + * Build the explanation. + * + * Note: The query may still be executing while we do this. + * + * Note: The document that we are building writes onto the http + * response. Therefore, the response MIGHT be committed anytime after we + * start producing this document. + * + * Note: If the query fails after this point, this method will wind up + * writing the stack trace into the response page. + */ final HTMLBuilder doc = new HTMLBuilder(queryTask.charset.name(), w); { @@ -842,22 +849,38 @@ } - /* - * Wait for the Future. If the query fails, then note the exception - * but do NOT rethrow it. The exception will get painted into the - * page. - */ - Throwable cause = null; try { - // Wait for the query to finish. + + /* + * Wait for the Future. If the query fails, then note the + * exception but do NOT rethrow it. The exception will get + * painted into the page. + */ + ft.get(); + /* * Note: An InterruptedException here is NOT caught. It means * that this Thread was interrupted rather than the Query. */ + } catch (ExecutionException ex) { + // Some error. - cause = ex.getCause(); + final Throwable cause = ex.getCause(); + + // Format the stack trace. + final StringWriter sw = new StringWriter(); + + cause.printStackTrace(new PrintWriter(sw)); + + final String s = sw.getBuffer().toString(); + + // And write it into the page. + current.node("pre").text(s).close(); + + // Fall through and paint the query stats table(s). + } current.node("h2", "Query Evaluation Statistics"); @@ -899,28 +922,13 @@ .text(q.isCancelled()?", CANCELLED.":".") .close(); - if (cause != null) { - - // Format the stack trace. - - final StringWriter sw = new StringWriter(); - - cause.printStackTrace(new PrintWriter(sw)); - - final String s = sw.getBuffer().toString(); - - // And write it into the page. - - current.node("pre").text(s).close(); - - } - /* * Format query statistics as a table. * * Note: This is writing on the Writer so it goes directly into * the HTML document we are building for the client. */ + QueryLog.getTableXHTML(queryStr, q, children, w, false/* summaryOnly */, 0/* maxBopLength */); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |