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");
     }
   }
 

Reply via email to