You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by jd...@apache.org on 2014/12/23 11:39:58 UTC

incubator-lens git commit: LENS-145 jdbc throwing result formatter error if indriver persistant resultset is enabled (amareshwari via jdhok)

Repository: incubator-lens
Updated Branches:
  refs/heads/master 816519bee -> 03ee90cde


LENS-145 jdbc throwing result formatter error if indriver persistant resultset is enabled (amareshwari via jdhok)


Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/03ee90cd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/03ee90cd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/03ee90cd

Branch: refs/heads/master
Commit: 03ee90cdee3816e476a5836d46a7c9a3e079dd00
Parents: 816519b
Author: jdhok <ja...@inmobi.com>
Authored: Tue Dec 23 16:09:46 2014 +0530
Committer: jdhok <ja...@inmobi.com>
Committed: Tue Dec 23 16:09:46 2014 +0530

----------------------------------------------------------------------
 .../org/apache/lens/server/query/ResultFormatter.java | 12 +++++++-----
 .../lens/server/query/TestResultFormatting.java       | 14 ++++++++++++++
 2 files changed, 21 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/03ee90cd/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 116335f..7c256f9 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
@@ -86,7 +86,8 @@ public class ResultFormatter extends AsyncEventListener<QueryExecuted> {
       if (ctx.isResultAvailableInDriver()) {
         LOG.info("Result formatter for " + queryHandle);
         LensResultSet resultSet = queryService.getDriverResultset(queryHandle);
-        if (resultSet instanceof PersistentResultSet) {
+        boolean isPersistedInDriver = resultSet instanceof PersistentResultSet;
+        if (isPersistedInDriver) {
           // skip result formatting if persisted size is huge
           Path persistedDirectory = new Path(ctx.getHdfsoutPath());
           FileSystem fs = persistedDirectory.getFileSystem(ctx.getConf());
@@ -102,7 +103,7 @@ public class ResultFormatter extends AsyncEventListener<QueryExecuted> {
           }
         }
         // now do the formatting
-        createAndSetFormatter(ctx);
+        createAndSetFormatter(ctx, isPersistedInDriver);
         QueryOutputFormatter formatter = ctx.getQueryOutputFormatter();
         try {
           formatter.init(ctx, resultSet.getMetadata());
@@ -110,7 +111,7 @@ public class ResultFormatter extends AsyncEventListener<QueryExecuted> {
               LensConfConstants.DEFAULT_OUTPUT_WRITE_HEADER)) {
             formatter.writeHeader();
           }
-          if (resultSet instanceof PersistentResultSet) {
+          if (isPersistedInDriver) {
             LOG.info("Result formatter for " + queryHandle + " in persistent result");
             Path persistedDirectory = new Path(ctx.getHdfsoutPath());
             // write all files from persistent directory
@@ -150,15 +151,16 @@ public class ResultFormatter extends AsyncEventListener<QueryExecuted> {
    *
    * @param ctx
    *          the ctx
+   * @param isPersistedInDriver
    * @throws LensException
    *           the lens exception
    */
   @SuppressWarnings("unchecked")
-  void createAndSetFormatter(QueryContext ctx) throws LensException {
+  void createAndSetFormatter(QueryContext ctx, boolean isPersistedInDriver) throws LensException {
     if (ctx.getQueryOutputFormatter() == null && ctx.isPersistent()) {
       QueryOutputFormatter formatter;
       try {
-        if (ctx.isDriverPersistent()) {
+        if (isPersistedInDriver) {
           formatter = ReflectionUtils.newInstance(
               ctx.getConf().getClass(
                   LensConfConstants.QUERY_OUTPUT_FORMATTER,

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/03ee90cd/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 64a410a..5074548 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
@@ -37,6 +37,9 @@ import org.apache.lens.server.LensJerseyTest;
 import org.apache.lens.server.LensServices;
 import org.apache.lens.server.LensTestUtil;
 import org.apache.lens.server.api.LensConfConstants;
+import org.apache.lens.server.api.query.InMemoryOutputFormatter;
+import org.apache.lens.server.api.query.PersistedOutputFormatter;
+import org.apache.lens.server.api.query.QueryContext;
 import org.apache.lens.server.query.QueryApp;
 import org.apache.lens.server.query.QueryExecutionServiceImpl;
 import org.glassfish.jersey.client.ClientConfig;
@@ -238,6 +241,17 @@ public class TestResultFormatting extends LensJerseyTest {
     Assert.assertEquals(ctx.getStatus().getStatus(), status);
 
     if (status.equals(QueryStatus.Status.SUCCESSFUL)) {
+      QueryContext qctx = queryService.getQueryContext(handle);
+      if (!isDir) {
+        // isDir is true if the formatter is skipped due to result being the max size allowed
+        if (qctx.isDriverPersistent()) {
+          Assert.assertTrue(qctx.getQueryOutputFormatter() instanceof PersistedOutputFormatter);
+        } else {
+          Assert.assertTrue(qctx.getQueryOutputFormatter() instanceof InMemoryOutputFormatter);
+        }
+      } else {
+        Assert.assertNull(qctx.getQueryOutputFormatter());
+      }
       // fetch results
       TestQueryService.validatePersistedResult(handle, target(), lensSessionId, new String[][]{
         {"ID", "INT"}, {"IDSTR", "STRING"}, {"IDARR", "ARRAY"}, {"IDSTRARR", "ARRAY"},