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