Repository: lens Updated Branches: refs/heads/master 393153fab -> 06d968151
LENS-825 : Fixed result formatting failure reason on query status Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/06d96815 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/06d96815 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/06d96815 Branch: refs/heads/master Commit: 06d96815107e75df909a3992b2ea4a7cd5f174ce Parents: 393153f Author: Amareshwari Sriramadasu <[email protected]> Authored: Tue Apr 26 16:24:47 2016 +0530 Committer: Puneet <[email protected]> Committed: Tue Apr 26 16:24:47 2016 +0530 ---------------------------------------------------------------------- .../server/query/QueryExecutionServiceImpl.java | 23 ++++++-------------- .../lens/server/query/ResultFormatter.java | 3 ++- .../lens/server/query/TestResultFormatting.java | 5 ++++- 3 files changed, 13 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/06d96815/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java index 42bd4ab..d1d8e65 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java @@ -42,7 +42,6 @@ import org.apache.lens.api.LensSessionHandle; import org.apache.lens.api.error.ErrorCollection; import org.apache.lens.api.query.*; import org.apache.lens.api.query.QueryStatus.Status; -import org.apache.lens.api.result.LensErrorTO; import org.apache.lens.driver.hive.HiveDriver; import org.apache.lens.server.BaseLensService; import org.apache.lens.server.LensServerConf; @@ -62,6 +61,7 @@ import org.apache.lens.server.api.query.*; import org.apache.lens.server.api.query.collect.WaitingQueriesSelectionPolicy; import org.apache.lens.server.api.query.constraint.QueryLaunchingConstraint; import org.apache.lens.server.api.query.cost.QueryCost; +import org.apache.lens.server.api.util.LensUtil; import org.apache.lens.server.model.LogSegregationContext; import org.apache.lens.server.model.MappedDiagnosticLogSegregationContext; import org.apache.lens.server.query.collect.*; @@ -702,17 +702,9 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE removalFromLaunchedQueriesLock.unlock(); } } - } catch (LensException e) { - - log.error("Error launching query: {}", query.getQueryHandle(), e); - String reason = e.getCause() != null ? e.getCause().getMessage() : e.getMessage(); - setFailedStatus(query, "Launching query failed", reason, e.buildLensErrorTO(this.errorCollection)); - continue; - } catch (Exception e) { log.error("Error launching query: {}", query.getQueryHandle(), e); - String reason = e.getCause() != null ? e.getCause().getMessage() : e.getMessage(); - setFailedStatus(query, "Launching query failed", reason, null); + setFailedStatus(query, "Launching query failed", e); continue; } finally { release(query.getLensSessionIdentifier()); @@ -828,18 +820,17 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE * * @param ctx the ctx * @param statusMsg the status msg - * @param reason the reason + * @param e the LensException * @throws LensException the lens exception */ - void setFailedStatus(QueryContext ctx, String statusMsg, String reason, final LensErrorTO lensErrorTO) - throws LensException { + void setFailedStatus(QueryContext ctx, String statusMsg, Exception e) throws LensException { QueryStatus before = ctx.getStatus(); - ctx.setStatus(new QueryStatus(0.0f, null, FAILED, statusMsg, false, null, reason, lensErrorTO)); + ctx.setStatus(new QueryStatus(0.0f, null, FAILED, statusMsg, false, null, LensUtil.getCauseMessage(e), + e instanceof LensException ? ((LensException)e).buildLensErrorTO(this.errorCollection) : null)); updateFinishedQuery(ctx, before); fireStatusChangeEvent(ctx, ctx.getStatus(), before); } - /** * Sets the cancelled status. * @@ -906,7 +897,7 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE ctx.updateDriverStatus(statusUpdateRetryHandler); } catch (LensException exc) { // Status update from driver failed - setFailedStatus(ctx, "Status update failed", exc.getMessage(), exc.buildLensErrorTO(this.errorCollection)); + setFailedStatus(ctx, "Status update failed", exc); log.error("Status update failed for {}", handle, exc); return; } http://git-wip-us.apache.org/repos/asf/lens/blob/06d96815/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java b/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java index c8bfa56..f465e9d 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/ResultFormatter.java @@ -43,6 +43,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class ResultFormatter extends AsyncEventListener<QueryExecuted> { + public static final String ERROR_MESSAGE = "Result formatting failed!"; /** The query service. */ QueryExecutionServiceImpl queryService; @@ -141,7 +142,7 @@ public class ResultFormatter extends AsyncEventListener<QueryExecuted> { metricsService.incrCounter(ResultFormatter.class, "formatting-errors"); log.warn("Exception while formatting result for {}", queryHandle, e); try { - queryService.setFailedStatus(ctx, "Result formatting failed!", e.getMessage(), null); + queryService.setFailedStatus(ctx, ERROR_MESSAGE, e); } catch (LensException e1) { log.error("Exception while setting failure for {}", queryHandle, e1); } http://git-wip-us.apache.org/repos/asf/lens/blob/06d96815/lens-server/src/test/java/org/apache/lens/server/query/TestResultFormatting.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestResultFormatting.java b/lens-server/src/test/java/org/apache/lens/server/query/TestResultFormatting.java index f66f89d..646e759 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestResultFormatting.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestResultFormatting.java @@ -216,7 +216,7 @@ public class TestResultFormatting extends LensJerseyTest { while (!stat.finished()) { ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request(mt).get(LensQuery.class); stat = ctx.getStatus(); - Thread.sleep(1000); + Thread.sleep(100); } assertEquals(ctx.getStatus().getStatus(), status); @@ -254,6 +254,9 @@ public class TestResultFormatting extends LensJerseyTest { assertTrue(ctx.getDriverFinishTime() > 0); assertTrue(ctx.getFinishTime() > 0); assertEquals(ctx.getStatus().getStatus(), QueryStatus.Status.FAILED); + assertFalse(ctx.getStatus().isResultSetAvailable()); + assertEquals(ctx.getStatus().getStatusMessage(), ResultFormatter.ERROR_MESSAGE); + assertEquals(ctx.getStatus().getErrorMessage(), "Class NonexistentSerde.class not found"); } }
