You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2015/10/25 06:53:42 UTC
lens git commit: LENS-832 : Fix recovery for queued queries upon
restart
Repository: lens
Updated Branches:
refs/heads/master b54c4b999 -> 3cd03a37a
LENS-832 : Fix recovery for queued queries upon restart
Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/3cd03a37
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/3cd03a37
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/3cd03a37
Branch: refs/heads/master
Commit: 3cd03a37a7914e493eb3fdee41fb96fbbf0f0d89
Parents: b54c4b9
Author: Amareshwari Sriramadasu <am...@apache.org>
Authored: Sun Oct 25 11:23:28 2015 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Sun Oct 25 11:23:28 2015 +0530
----------------------------------------------------------------------
.../lens/server/api/query/MockQueryContext.java | 4 ++
.../api/query/TestAbstractQueryContext.java | 46 ++++++++++++++++++++
.../server/query/QueryExecutionServiceImpl.java | 1 +
3 files changed, 51 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lens/blob/3cd03a37/lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java b/lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java
index 12fb4ce..fd6b560 100644
--- a/lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java
+++ b/lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java
@@ -43,6 +43,10 @@ public class MockQueryContext extends QueryContext {
this(new Configuration());
}
+ public MockQueryContext(final Collection<LensDriver> drivers) throws LensException {
+ this("mock query", new LensConf(), new Configuration(), drivers);
+ }
+
public MockQueryContext(Configuration conf) throws LensException {
this("mock query", new LensConf(), conf, getDrivers(conf));
}
http://git-wip-us.apache.org/repos/asf/lens/blob/3cd03a37/lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java b/lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java
index 44978f2..e41f2f4 100644
--- a/lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java
+++ b/lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java
@@ -26,14 +26,18 @@ import static org.testng.Assert.*;
import java.io.*;
import java.util.Arrays;
+import java.util.List;
import org.apache.lens.api.Priority;
+import org.apache.lens.server.api.driver.LensDriver;
import org.apache.lens.server.api.driver.MockDriver;
import org.apache.lens.server.api.error.LensException;
import org.apache.lens.server.api.metrics.LensMetricsRegistry;
import org.apache.lens.server.api.query.cost.MockQueryCostCalculator;
import org.apache.lens.server.api.query.priority.MockQueryPriorityDecider;
+import org.apache.hadoop.conf.Configuration;
+
import org.testng.annotations.Test;
import com.codahale.metrics.MetricRegistry;
@@ -103,4 +107,46 @@ public class TestAbstractQueryContext {
assertEquals(ctx.getPriority(), HIGH);
}
+ @Test
+ public void testReadAndWriteExternal() throws Exception {
+ Configuration conf = new Configuration();
+ List<LensDriver> drivers = MockQueryContext.getDrivers(conf);
+ MockQueryContext ctx = new MockQueryContext(drivers);
+ String driverQuery = "driver query";
+ ctx.setSelectedDriverQuery(driverQuery);
+ assertNotNull(ctx.getSelectedDriverQuery());
+ assertEquals(ctx.getSelectedDriverQuery(), driverQuery);
+ assertEquals(ctx.getDriverQuery(ctx.getSelectedDriver()), driverQuery);
+
+ ByteArrayOutputStream bios = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(bios);
+ byte[] ctxBytes = null;
+ try {
+ out.writeObject(ctx);
+ ctxBytes = bios.toByteArray();
+ } finally {
+ out.close();
+ }
+ ByteArrayInputStream bais = new ByteArrayInputStream(ctxBytes);
+ ObjectInputStream in = new ObjectInputStream(bais);
+ MockQueryContext ctxRead = null;
+ try {
+ ctxRead = (MockQueryContext) in.readObject();
+ } finally {
+ in.close();
+ }
+ ctxRead.initTransientState();
+ ctxRead.setConf(ctx.getConf());
+ assertNotNull(ctxRead.getHiveConf());
+ assertNotNull(ctxRead.getSelectedDriverQuery());
+ assertEquals(ctxRead.getSelectedDriverQuery(), driverQuery);
+
+ //Create DriverSelectorQueryContext by passing all the drivers and the user query
+ DriverSelectorQueryContext driverCtx = new DriverSelectorQueryContext(ctxRead.getUserQuery(), ctxRead.getConf(),
+ drivers);
+ ctxRead.setDriverContext(driverCtx);
+ ctxRead.getDriverContext().setSelectedDriver(ctx.getSelectedDriver());
+ ctxRead.setDriverQuery(ctxRead.getSelectedDriver(), ctxRead.getSelectedDriverQuery());
+ assertEquals(ctxRead.getDriverQuery(ctxRead.getSelectedDriver()), driverQuery);
+ }
}
http://git-wip-us.apache.org/repos/asf/lens/blob/3cd03a37/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 1a49250..4d8ae51 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
@@ -2345,6 +2345,7 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
if (driverAvailable) {
String clsName = in.readUTF();
ctx.getDriverContext().setSelectedDriver(drivers.get(clsName));
+ ctx.setDriverQuery(ctx.getSelectedDriver(), ctx.getSelectedDriverQuery());
}
allQueries.put(ctx.getQueryHandle(), ctx);
}