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