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"},