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/03/24 09:46:37 UTC

incubator-lens git commit: LENS-431 : Make hiveConfLock transient in AbstractQueryContext (amareshwari)

Repository: incubator-lens
Updated Branches:
  refs/heads/master 0d9ada50f -> b908e2ef0


LENS-431 : Make hiveConfLock transient in AbstractQueryContext (amareshwari)


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

Branch: refs/heads/master
Commit: b908e2ef07ca13ae5171bf0603f5a5865d819fd4
Parents: 0d9ada5
Author: Amareshwari Sriramadasu <am...@apache.org>
Authored: Tue Mar 24 14:16:23 2015 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Tue Mar 24 14:16:23 2015 +0530

----------------------------------------------------------------------
 .../server/api/query/AbstractQueryContext.java  |  7 +++-
 .../api/query/TestAbstractQueryContext.java     | 35 ++++++++++++++++++++
 .../server/query/QueryExecutionServiceImpl.java |  1 +
 3 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/b908e2ef/lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java
index 6390bd4..5233569 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java
@@ -113,7 +113,7 @@ public abstract class AbstractQueryContext implements Serializable {
   private boolean olapQuery = false;
 
   /** Lock used to synchronize HiveConf access */
-  private final Lock hiveConfLock = new ReentrantLock();
+  private transient Lock hiveConfLock = new ReentrantLock();
 
   protected AbstractQueryContext(final String query, final String user, final LensConf qconf, final Configuration conf,
     final Collection<LensDriver> drivers, boolean mergeDriverConf) {
@@ -135,6 +135,11 @@ public abstract class AbstractQueryContext implements Serializable {
     }
   }
 
+  // called after the object is constructed from serialized object
+  public void initTransientState() {
+    hiveConfLock = new ReentrantLock();
+  }
+
   /**
    * Set driver queries
    *

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/b908e2ef/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 06ce751..a90ca7f 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
@@ -18,6 +18,11 @@
  */
 package org.apache.lens.server.api.query;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -88,4 +93,34 @@ public class TestAbstractQueryContext {
     Assert.assertTrue(reg.getGauges().keySet().containsAll(Arrays.asList(
       "lens.MethodMetricGauge.TestAbstractQueryContext-MockDriver-driverEstimate")));
   }
+
+  @Test
+  public void testTransientState() throws LensException, IOException, ClassNotFoundException {
+    Configuration conf = new Configuration();
+    List<LensDriver> testDrivers = new ArrayList<LensDriver>();
+    MockDriver mdriver = new MockDriver();
+    mdriver.configure(conf);
+    testDrivers.add(mdriver);
+    MockQueryContext ctx = new MockQueryContext("mock query", new LensConf(), conf, testDrivers);
+    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(conf);
+    Assert.assertNotNull(ctxRead.getHiveConf());
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/b908e2ef/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 18eb2dc..390071c 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
@@ -2128,6 +2128,7 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
 
       for (int i = 0; i < numQueries; i++) {
         QueryContext ctx = (QueryContext) in.readObject();
+        ctx.initTransientState();
 
         //Create DriverSelectorQueryContext by passing all the drivers and the user query
         //Driver conf gets reset in start