You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by sh...@apache.org on 2015/07/29 06:57:01 UTC
[14/50] [abbrv] incubator-lens git commit: LENS-650 :Move pre-submit
hook out of User Config Loader into DriverQueryHook
LENS-650 :Move pre-submit hook out of User Config Loader into DriverQueryHook
Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/c7261d12
Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/c7261d12
Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/c7261d12
Branch: refs/heads/LENS-581
Commit: c7261d12b622d5990bd80edffe2a1654ba1a2a6d
Parents: 689c9a9
Author: Rajat Khandelwal <pr...@apache.org>
Authored: Mon Jul 20 12:21:37 2015 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Mon Jul 20 12:21:37 2015 +0530
----------------------------------------------------------------------
.../org/apache/lens/driver/hive/HiveDriver.java | 24 ++++-----
.../apache/lens/driver/hive/TestHiveDriver.java | 17 +++----
.../lens/driver/hive/TestRemoteHiveDriver.java | 14 +++---
.../org/apache/lens/driver/jdbc/JDBCDriver.java | 32 ++++++------
.../driver/jdbc/JDBCDriverConfConstants.java | 1 +
.../apache/lens/driver/jdbc/TestJdbcDriver.java | 17 +++----
.../lens/server/api/LensConfConstants.java | 2 +-
.../lens/server/api/driver/DriverQueryHook.java | 50 +++++++++++++++++++
.../lens/server/api/driver/LensDriver.java | 11 ++---
.../server/api/driver/NoOpDriverQueryHook.java | 35 +++++++++++++
.../lens/server/api/user/UserConfigLoader.java | 37 +++-----------
.../lens/server/api/driver/MockDriver.java | 6 +--
.../server/api/user/MockDriverQueryHook.java | 32 ++++++++++++
.../server/api/user/MockUserConfigLoader.java | 47 ------------------
.../server/query/QueryExecutionServiceImpl.java | 52 ++++++++++----------
.../server/user/DatabaseUserConfigLoader.java | 5 +-
.../lens/server/user/FixedUserConfigLoader.java | 25 +++++-----
.../user/PropertyBasedUserConfigLoader.java | 15 +++---
.../lens/server/user/FooBarConfigLoader.java | 11 +----
19 files changed, 222 insertions(+), 211 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
index e87ed23..89d671f 100644
--- a/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
+++ b/lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java
@@ -44,7 +44,6 @@ import org.apache.lens.server.api.query.cost.QueryCostCalculator;
import org.apache.lens.server.api.query.priority.CostRangePriorityDecider;
import org.apache.lens.server.api.query.priority.CostToPriorityRangeConf;
import org.apache.lens.server.api.query.priority.QueryPriorityDecider;
-import org.apache.lens.server.api.user.UserConfigLoader;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
@@ -72,6 +71,8 @@ public class HiveDriver implements LensDriver {
/** The Constant HIVE_CONNECTION_CLASS. */
public static final String HIVE_CONNECTION_CLASS = "lens.driver.hive.connection.class";
+ public static final String HIVE_QUERY_HOOK_CLASS = "lens.driver.hive.query.hook.class";
+
/** The Constant HS2_CONNECTION_EXPIRY_DELAY. */
public static final String HS2_CONNECTION_EXPIRY_DELAY = "lens.driver.hive.hs2.connection.expiry.delay";
@@ -127,7 +128,7 @@ public class HiveDriver implements LensDriver {
QueryPriorityDecider queryPriorityDecider;
// package-local. Test case can change.
boolean whetherCalculatePriority;
- private UserConfigLoader userConfigLoader;
+ private DriverQueryHook queryHook;
private String sessionDbKey(String sessionHandle, String database) {
@@ -341,6 +342,13 @@ public class HiveDriver implements LensDriver {
queryPriorityDecider = new CostRangePriorityDecider(
new CostToPriorityRangeConf(driverConf.get(HS2_PRIORITY_RANGES, HS2_PRIORITY_DEFAULT_RANGES))
);
+ try {
+ queryHook = driverConf.getClass(
+ HIVE_QUERY_HOOK_CLASS, NoOpDriverQueryHook.class, DriverQueryHook.class
+ ).newInstance();
+ } catch (InstantiationException | IllegalAccessException e) {
+ throw new LensException("Can't instantiate driver query hook for hivedriver with given class", e);
+ }
}
private QueryCost calculateQueryCost(AbstractQueryContext qctx) throws LensException {
@@ -350,6 +358,7 @@ public class HiveDriver implements LensDriver {
return new FactPartitionBasedQueryCost(Double.MAX_VALUE);
}
}
+
@Override
public QueryCost estimate(AbstractQueryContext qctx) throws LensException {
log.info("Estimate: " + qctx.getDriverQuery(this));
@@ -520,9 +529,7 @@ public class HiveDriver implements LensDriver {
+ "User query: " + ctx.getUserQuery(), e);
}
}
- if (userConfigLoader != null) {
- userConfigLoader.preSubmit(ctx);
- }
+ queryHook.preLaunch(ctx);
OperationHandle op = getClient().executeStatementAsync(getSession(ctx), ctx.getSelectedDriverQuery(),
qdconf.getValByRegex(".*"));
ctx.setDriverOpHandle(op.toString());
@@ -758,11 +765,6 @@ public class HiveDriver implements LensDriver {
driverListeners.add(driverEventListener);
}
- @Override
- public void registerUserConfigLoader(UserConfigLoader userConfigLoader) {
- this.userConfigLoader = userConfigLoader;
- }
-
protected CLIServiceClient getClient() throws LensException {
if (isEmbedded) {
if (embeddedConnection == null) {
@@ -982,7 +984,7 @@ public class HiveDriver implements LensDriver {
listener.onCompletion(handle);
return;
}
- } catch(LensException e) {
+ } catch (LensException e) {
log.debug("query handle: {} Not yet launched on driver", handle);
}
Thread.sleep(pollInterval);
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java
index 67a4667..78b3320 100644
--- a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java
+++ b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java
@@ -18,9 +18,6 @@
*/
package org.apache.lens.driver.hive;
-import static org.apache.lens.server.api.user.MockUserConfigLoader.KEY;
-import static org.apache.lens.server.api.user.MockUserConfigLoader.VALUE;
-
import static org.testng.Assert.*;
import java.io.*;
@@ -40,7 +37,7 @@ import org.apache.lens.server.api.query.*;
import org.apache.lens.server.api.query.cost.QueryCost;
import org.apache.lens.server.api.query.priority.CostRangePriorityDecider;
import org.apache.lens.server.api.query.priority.CostToPriorityRangeConf;
-import org.apache.lens.server.api.user.MockUserConfigLoader;
+import org.apache.lens.server.api.user.MockDriverQueryHook;
import org.apache.lens.server.api.util.LensUtil;
import org.apache.hadoop.conf.Configuration;
@@ -56,6 +53,8 @@ import org.apache.hive.service.cli.ColumnDescriptor;
import org.testng.annotations.*;
+import com.google.common.collect.Lists;
+
/**
* The Class TestHiveDriver.
@@ -115,16 +114,12 @@ public class TestHiveDriver {
conf = new HiveConf();
conf.addResource("hivedriver-site.xml");
conf.setClass(HiveDriver.HIVE_CONNECTION_CLASS, EmbeddedThriftConnection.class, ThriftConnection.class);
+ conf.setClass(HiveDriver.HIVE_QUERY_HOOK_CLASS, MockDriverQueryHook.class, DriverQueryHook.class);
conf.set("hive.lock.manager", "org.apache.hadoop.hive.ql.lockmgr.EmbeddedLockManager");
conf.setBoolean(HiveDriver.HS2_CALCULATE_PRIORITY, true);
driver = new HiveDriver();
driver.configure(conf);
- driver.registerUserConfigLoader(new MockUserConfigLoader(conf));
- drivers = new ArrayList<LensDriver>() {
- {
- add(driver);
- }
- };
+ drivers = Lists.<LensDriver>newArrayList(driver);
System.out.println("TestHiveDriver created");
}
@@ -477,7 +472,7 @@ public class TestHiveDriver {
*/
protected void validateExecuteAsync(QueryContext ctx, DriverQueryState finalState, boolean isPersistent,
boolean formatNulls) throws Exception {
- assertEquals(ctx.getSelectedDriverConf().get(KEY), VALUE);
+ assertEquals(ctx.getSelectedDriverConf().get(MockDriverQueryHook.KEY), MockDriverQueryHook.VALUE);
validateExecuteAsync(ctx, finalState, isPersistent, formatNulls, driver);
}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java
index c144fd8..98edc28 100644
--- a/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java
+++ b/lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java
@@ -28,12 +28,13 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.lens.api.query.QueryHandle;
import org.apache.lens.server.api.LensConfConstants;
+import org.apache.lens.server.api.driver.DriverQueryHook;
import org.apache.lens.server.api.driver.DriverQueryPlan;
import org.apache.lens.server.api.driver.DriverQueryStatus.DriverQueryState;
import org.apache.lens.server.api.driver.LensDriver;
import org.apache.lens.server.api.error.LensException;
import org.apache.lens.server.api.query.QueryContext;
-import org.apache.lens.server.api.user.MockUserConfigLoader;
+import org.apache.lens.server.api.user.MockDriverQueryHook;
import org.apache.commons.io.FileUtils;
import org.apache.hadoop.hive.conf.HiveConf;
@@ -46,6 +47,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
/**
@@ -134,13 +136,9 @@ public class TestRemoteHiveDriver extends TestHiveDriver {
conf.addResource("hivedriver-site.xml");
driver = new HiveDriver();
conf.setBoolean(HiveDriver.HS2_CALCULATE_PRIORITY, true);
+ conf.setClass(HiveDriver.HIVE_QUERY_HOOK_CLASS, MockDriverQueryHook.class, DriverQueryHook.class);
driver.configure(conf);
- driver.registerUserConfigLoader(new MockUserConfigLoader(conf));
- drivers = new ArrayList<LensDriver>() {
- {
- add(driver);
- }
- };
+ drivers = Lists.<LensDriver>newArrayList(driver);
System.out.println("TestRemoteHiveDriver created");
}
@@ -198,7 +196,7 @@ public class TestRemoteHiveDriver extends TestHiveDriver {
}
Thread.sleep(POLL_DELAY);
} catch (LensException e) {
- log.error("Got Exception " +e.getCause(), e);
+ log.error("Got Exception " + e.getCause(), e);
errCount.incrementAndGet();
break;
} catch (InterruptedException e) {
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
index e048a78..a09cd1b 100644
--- a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
+++ b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java
@@ -20,8 +20,6 @@ package org.apache.lens.driver.jdbc;
import static org.apache.lens.driver.jdbc.JDBCDriverConfConstants.*;
-import static org.apache.hadoop.hive.ql.parse.HiveParser.TOK_TMP_FILE;
-
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
@@ -33,7 +31,8 @@ import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.lens.api.LensConf;
-import org.apache.lens.api.query.*;
+import org.apache.lens.api.query.QueryHandle;
+import org.apache.lens.api.query.QueryPrepareHandle;
import org.apache.lens.cube.parse.HQLParser;
import org.apache.lens.server.api.driver.*;
import org.apache.lens.server.api.driver.DriverQueryStatus.DriverQueryState;
@@ -41,11 +40,12 @@ import org.apache.lens.server.api.error.LensException;
import org.apache.lens.server.api.events.LensEventListener;
import org.apache.lens.server.api.metrics.MethodMetricsContext;
import org.apache.lens.server.api.metrics.MethodMetricsFactory;
-import org.apache.lens.server.api.query.*;
+import org.apache.lens.server.api.query.AbstractQueryContext;
+import org.apache.lens.server.api.query.PreparedQueryContext;
+import org.apache.lens.server.api.query.QueryContext;
import org.apache.lens.server.api.query.cost.FactPartitionBasedQueryCost;
import org.apache.lens.server.api.query.cost.QueryCost;
import org.apache.lens.server.api.query.rewrite.QueryRewriter;
-import org.apache.lens.server.api.user.UserConfigLoader;
import org.apache.lens.server.model.LogSegregationContext;
import org.apache.lens.server.model.MappedDiagnosticLogSegregationContext;
@@ -92,7 +92,7 @@ public class JDBCDriver implements LensDriver {
private ConnectionProvider estimateConnectionProvider;
private LogSegregationContext logSegregationContext;
- private UserConfigLoader userConfigLoader;
+ private DriverQueryHook queryHook;
/**
* Data related to a query submitted to JDBCDriver.
@@ -419,6 +419,13 @@ public class JDBCDriver implements LensDriver {
this.conf.addResource("jdbcdriver-default.xml");
this.conf.addResource("jdbcdriver-site.xml");
init(conf);
+ try {
+ queryHook = this.conf.getClass(
+ JDBC_QUERY_HOOK_CLASS, NoOpDriverQueryHook.class, DriverQueryHook.class
+ ).newInstance();
+ } catch (InstantiationException | IllegalAccessException e) {
+ throw new LensException("Can't instantiate driver query hook for hivedriver with given class", e);
+ }
configured = true;
LOG.info("JDBC Driver configured");
}
@@ -532,7 +539,7 @@ public class JDBCDriver implements LensDriver {
// check for insert clause
ASTNode dest = HQLParser.findNodeByPath(ast, HiveParser.TOK_INSERT);
if (dest != null
- && ((ASTNode) (dest.getChild(0).getChild(0).getChild(0))).getToken().getType() != TOK_TMP_FILE) {
+ && ((ASTNode) (dest.getChild(0).getChild(0).getChild(0))).getToken().getType() != HiveParser.TOK_TMP_FILE) {
throw new LensException("Not allowed statement:" + query);
}
}
@@ -889,9 +896,7 @@ public class JDBCDriver implements LensDriver {
String rewrittenQuery = rewriteQuery(context);
JdbcQueryContext jdbcCtx = new JdbcQueryContext(context, logSegregationContext);
jdbcCtx.setRewrittenQuery(rewrittenQuery);
- if (userConfigLoader != null) {
- userConfigLoader.preSubmit(context);
- }
+ queryHook.preLaunch(context);
try {
Future<QueryResult> future = asyncQueryPool.submit(new QueryCallable(jdbcCtx, logSegregationContext));
jdbcCtx.setResultFuture(future);
@@ -1079,13 +1084,6 @@ public class JDBCDriver implements LensDriver {
}
-
- @Override
- public void registerUserConfigLoader(UserConfigLoader userConfigLoader) {
- this.userConfigLoader = userConfigLoader;
- }
-
-
/*
* (non-Javadoc)
*
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java
----------------------------------------------------------------------
diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java
index 5abd040..ebcdaca 100644
--- a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java
+++ b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriverConfConstants.java
@@ -33,6 +33,7 @@ public final class JDBCDriverConfConstants {
/** The Constant JDBC_QUERY_REWRITER_CLASS. */
public static final String JDBC_QUERY_REWRITER_CLASS = JDBC_DRIVER_PFX + "query.rewriter";
+ public static final String JDBC_QUERY_HOOK_CLASS = JDBC_DRIVER_PFX + "query.hook.class";
/** The Constant JDBC_DRIVER_CLASS. */
public static final String JDBC_DRIVER_CLASS = JDBC_DRIVER_PFX + "driver.class";
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java
----------------------------------------------------------------------
diff --git a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java
index a6c97ae..f534b69 100644
--- a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java
+++ b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java
@@ -18,9 +18,6 @@
*/
package org.apache.lens.driver.jdbc;
-import static org.apache.lens.server.api.user.MockUserConfigLoader.KEY;
-import static org.apache.lens.server.api.user.MockUserConfigLoader.VALUE;
-
import static org.testng.Assert.*;
import java.sql.*;
@@ -40,7 +37,7 @@ import org.apache.lens.server.api.query.ExplainQueryContext;
import org.apache.lens.server.api.query.PreparedQueryContext;
import org.apache.lens.server.api.query.QueryContext;
import org.apache.lens.server.api.query.cost.QueryCost;
-import org.apache.lens.server.api.user.MockUserConfigLoader;
+import org.apache.lens.server.api.user.MockDriverQueryHook;
import org.apache.lens.server.api.util.LensUtil;
import org.apache.hadoop.conf.Configuration;
@@ -52,6 +49,7 @@ import org.testng.Assert;
import org.testng.annotations.*;
import com.codahale.metrics.MetricRegistry;
+import com.google.common.collect.Lists;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import lombok.extern.slf4j.Slf4j;
@@ -83,19 +81,16 @@ public class TestJdbcDriver {
baseConf.set(JDBCDriverConfConstants.JDBC_USER, "SA");
baseConf.set(JDBCDriverConfConstants.JDBC_PASSWORD, "");
baseConf.set(JDBCDriverConfConstants.JDBC_EXPLAIN_KEYWORD_PARAM, "explain plan for ");
+ baseConf.setClass(JDBCDriverConfConstants.JDBC_QUERY_HOOK_CLASS, MockDriverQueryHook.class, DriverQueryHook.class);
hConf = new HiveConf(baseConf, this.getClass());
driver = new JDBCDriver();
driver.configure(baseConf);
- driver.registerUserConfigLoader(new MockUserConfigLoader(hConf));
+
assertNotNull(driver);
assertTrue(driver.configured);
- drivers = new ArrayList<LensDriver>() {
- {
- add(driver);
- }
- };
+ drivers = Lists.<LensDriver>newArrayList(driver);
}
/**
@@ -650,7 +645,7 @@ public class TestJdbcDriver {
private void executeAsync(QueryContext ctx) throws LensException {
driver.executeAsync(ctx);
- assertEquals(ctx.getSelectedDriverConf().get(KEY), VALUE);
+ assertEquals(ctx.getSelectedDriverConf().get(MockDriverQueryHook.KEY), MockDriverQueryHook.VALUE);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
index eab42d0..2b3a480 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
@@ -716,7 +716,7 @@ public final class LensConfConstants {
* Interval at which lens session expiry service runs
*/
public static final String SESSION_EXPIRY_SERVICE_INTERVAL_IN_SECS = SERVER_PFX
- + "session.expiry.serivce.interval.secs";
+ + "session.expiry.serivce.interval.secs";
public static final int DEFAULT_SESSION_EXPIRY_SERVICE_INTERVAL_IN_SECS = 3600;
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java
new file mode 100644
index 0000000..70d999a
--- /dev/null
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryHook.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+ *
+ */
+package org.apache.lens.server.api.driver;
+
+import org.apache.lens.server.api.query.AbstractQueryContext;
+
+/**
+ * Drivers can choose to initialize a DriverQueryHook object in their
+ * initialization and use that wherever they want.
+ *
+ * The only use case I see right now is to provide a hook just before query is
+ * launched on the driver.
+ *
+ * This interface is meant to unify drivers' needs of having hooks. Each driver
+ * can use the methods in their own way. Each driver can pose its own restrictions
+ * or guidelines on methods for its hooks.
+ * e.g. some driver may choose to not allow any hooks
+ * another driver may allow hooks but for restricted usage
+ * Some drivers may want their hooks to be initialized with some constructor params
+ * Currently, Hivedriver and Jdbcdriver only require their hook implementations to have a default constructor
+ *
+ * This interface is expected to evolve for some time as more needs of hooks are discovered
+ *
+ */
+public interface DriverQueryHook {
+ /**
+ * Should be Called before launch on the driver
+ * @param ctx
+ */
+ void preLaunch(AbstractQueryContext ctx);
+}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java
index b56c67c..52207d3 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java
@@ -24,9 +24,10 @@ import org.apache.lens.api.query.QueryHandle;
import org.apache.lens.api.query.QueryPrepareHandle;
import org.apache.lens.server.api.error.LensException;
import org.apache.lens.server.api.events.LensEventListener;
-import org.apache.lens.server.api.query.*;
+import org.apache.lens.server.api.query.AbstractQueryContext;
+import org.apache.lens.server.api.query.PreparedQueryContext;
+import org.apache.lens.server.api.query.QueryContext;
import org.apache.lens.server.api.query.cost.QueryCost;
-import org.apache.lens.server.api.user.UserConfigLoader;
import org.apache.hadoop.conf.Configuration;
@@ -181,10 +182,4 @@ public interface LensDriver extends Externalizable {
* @param driverEventListener the driver event listener
*/
void registerDriverEventListener(LensEventListener<DriverEvent> driverEventListener);
-
- /**
- * Add the user config loader to driver for use
- * @param userConfigLoader
- */
- void registerUserConfigLoader(UserConfigLoader userConfigLoader);
}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/main/java/org/apache/lens/server/api/driver/NoOpDriverQueryHook.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/NoOpDriverQueryHook.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/NoOpDriverQueryHook.java
new file mode 100644
index 0000000..a5475e4
--- /dev/null
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/NoOpDriverQueryHook.java
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*
+ *
+ */
+package org.apache.lens.server.api.driver;
+
+import org.apache.lens.server.api.query.AbstractQueryContext;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class NoOpDriverQueryHook implements DriverQueryHook {
+ @Override
+ public void preLaunch(AbstractQueryContext ctx) {
+ log.info("Pre launch for {}, user query: {}, driver query: {}", ctx.getSubmittedUser(), ctx.getUserQuery(),
+ ctx.getSelectedDriverQuery());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/main/java/org/apache/lens/server/api/user/UserConfigLoader.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/user/UserConfigLoader.java b/lens-server-api/src/main/java/org/apache/lens/server/api/user/UserConfigLoader.java
index 93e11a2..61f3a5a 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/user/UserConfigLoader.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/user/UserConfigLoader.java
@@ -20,34 +20,13 @@ package org.apache.lens.server.api.user;
import java.util.Map;
-import org.apache.lens.server.api.error.LensException;
-import org.apache.lens.server.api.query.QueryContext;
-
-import org.apache.hadoop.hive.conf.HiveConf;
-
-import lombok.extern.slf4j.Slf4j;
-
/**
- * The Class UserConfigLoader. It's initialized once in the server lifetime. After that, t:
- * 1. Gets session configs for the user on each session open. This config applies to the particular session
- * and is forwarded for all actions. One Use case is to decide driver specific details e.g. priority/queue of
- * all queries of the user.
- * 2. Provides a pre-submit hook. Just before submission
+ * The Class UserConfigLoader. It's initialized once in the server lifetime. After that, it's job is to
+ * Get session configs for the user on each session open. This config applies to the particular session
+ * and is forwarded for all actions. One Use case is to decide driver specific details e.g. priority/queue of
+ * all queries of the user.
*/
-@Slf4j
-public abstract class UserConfigLoader {
-
- /** The hive conf. */
- protected final HiveConf hiveConf;
-
- /**
- * Instantiates a new user config loader.
- *
- * @param conf the conf
- */
- protected UserConfigLoader(HiveConf conf) {
- this.hiveConf = conf;
- }
+public interface UserConfigLoader {
/**
* Gets the user config.
@@ -56,9 +35,5 @@ public abstract class UserConfigLoader {
* @return the user config
* @throws UserConfigLoaderException the user config loader exception
*/
- public abstract Map<String, String> getUserConfig(String loggedInUser) throws UserConfigLoaderException;
-
- public void preSubmit(QueryContext ctx) throws LensException {
- log.debug("Pre submit " + ctx + " on " + ctx.getSelectedDriver());
- }
+ Map<String, String> getUserConfig(String loggedInUser) throws UserConfigLoaderException;
}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java b/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
index b52b08a..dffcfd3 100644
--- a/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
+++ b/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
@@ -36,7 +36,6 @@ import org.apache.lens.server.api.query.PreparedQueryContext;
import org.apache.lens.server.api.query.QueryContext;
import org.apache.lens.server.api.query.cost.FactPartitionBasedQueryCost;
import org.apache.lens.server.api.query.cost.QueryCost;
-import org.apache.lens.server.api.user.UserConfigLoader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hive.service.cli.ColumnDescriptor;
@@ -44,7 +43,7 @@ import org.apache.hive.service.cli.ColumnDescriptor;
/**
* The Class MockDriver.
*/
-public class MockDriver implements LensDriver {
+public class MockDriver implements LensDriver {
private static AtomicInteger mockDriverId = new AtomicInteger();
/**
@@ -186,9 +185,6 @@ public class MockDriver implements LensDriver {
public void registerDriverEventListener(LensEventListener<DriverEvent> driverEventListener) {
}
- @Override
- public void registerUserConfigLoader(UserConfigLoader userConfigLoader) {
- }
/*
* (non-Javadoc)
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockDriverQueryHook.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockDriverQueryHook.java b/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockDriverQueryHook.java
new file mode 100644
index 0000000..2505ef4
--- /dev/null
+++ b/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockDriverQueryHook.java
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.lens.server.api.user;
+
+import org.apache.lens.server.api.driver.DriverQueryHook;
+import org.apache.lens.server.api.query.AbstractQueryContext;
+
+public class MockDriverQueryHook implements DriverQueryHook {
+ public static final String KEY = "TEST_KEY";
+ public static final String VALUE = "TEST_VALUE";
+
+ @Override
+ public void preLaunch(AbstractQueryContext ctx) {
+ ctx.getSelectedDriverConf().set(KEY, VALUE);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockUserConfigLoader.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockUserConfigLoader.java b/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockUserConfigLoader.java
deleted file mode 100644
index f6ef0d4..0000000
--- a/lens-server-api/src/test/java/org/apache/lens/server/api/user/MockUserConfigLoader.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.lens.server.api.user;
-
-import java.util.Map;
-
-import org.apache.lens.server.api.error.LensException;
-import org.apache.lens.server.api.query.QueryContext;
-
-import org.apache.hadoop.hive.conf.HiveConf;
-
-import com.beust.jcommander.internal.Maps;
-
-public class MockUserConfigLoader extends UserConfigLoader {
- public static final String KEY = "TEST_KEY";
- public static final String VALUE = "TEST_VALUE";
-
- public MockUserConfigLoader(HiveConf conf) {
- super(conf);
- }
-
- @Override
- public Map<String, String> getUserConfig(String loggedInUser) throws UserConfigLoaderException {
- return Maps.newHashMap();
- }
-
- @Override
- public void preSubmit(QueryContext ctx) throws LensException {
- ctx.getSelectedDriverConf().set(KEY, VALUE);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/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 3511236..2d7a92a 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
@@ -19,6 +19,7 @@
package org.apache.lens.server.query;
import static org.apache.lens.api.query.QueryStatus.Status.*;
+import static org.apache.lens.server.api.LensConfConstants.*;
import static org.apache.lens.server.session.LensSessionImpl.ResourceEntry;
import java.io.*;
@@ -44,7 +45,6 @@ import org.apache.lens.driver.hive.HiveDriver;
import org.apache.lens.server.LensServerConf;
import org.apache.lens.server.LensService;
import org.apache.lens.server.LensServices;
-import org.apache.lens.server.api.LensConfConstants;
import org.apache.lens.server.api.driver.*;
import org.apache.lens.server.api.error.LensException;
import org.apache.lens.server.api.error.LensMultiCauseException;
@@ -60,7 +60,6 @@ import org.apache.lens.server.rewrite.RewriteUtil;
import org.apache.lens.server.rewrite.UserQueryToCubeQueryRewriter;
import org.apache.lens.server.session.LensSessionImpl;
import org.apache.lens.server.stats.StatisticsService;
-import org.apache.lens.server.user.UserConfigLoaderFactory;
import org.apache.lens.server.util.UtilityMethods;
import org.apache.commons.collections.CollectionUtils;
@@ -273,7 +272,7 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
* Initialize query acceptors and listeners.
*/
private void initializeQueryAcceptors() throws LensException {
- String[] acceptorClasses = conf.getStrings(LensConfConstants.ACCEPTOR_CLASSES);
+ String[] acceptorClasses = conf.getStrings(ACCEPTOR_CLASSES);
if (acceptorClasses != null) {
for (String acceptorClass : acceptorClasses) {
try {
@@ -290,7 +289,7 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
}
private void initializeListeners() {
- if (conf.getBoolean(LensConfConstants.QUERY_STATE_LOGGER_ENABLED, true)) {
+ if (conf.getBoolean(QUERY_STATE_LOGGER_ENABLED, true)) {
getEventService().addListenerForType(new QueryStatusLogger(), StatusChange.class);
log.info("Registered query state logger");
}
@@ -309,17 +308,16 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
* @throws LensException the lens exception
*/
private void loadDriversAndSelector() throws LensException {
- String[] driverClasses = conf.getStrings(LensConfConstants.DRIVER_CLASSES);
+ Class<?>[] driverClasses = conf.getClasses(DRIVER_CLASSES);
if (driverClasses != null) {
- for (String driverClass : driverClasses) {
+ for (Class<?> driverClass : driverClasses) {
try {
- Class<?> clazz = Class.forName(driverClass);
- LensDriver driver = (LensDriver) clazz.newInstance();
+ LensDriver driver = (LensDriver) driverClass.newInstance();
driver.configure(LensServerConf.getConf());
- driver.registerUserConfigLoader(UserConfigLoaderFactory.getUserConfigLoader());
- driver.registerDriverEventListener(driverEventListener);
-
- drivers.put(driverClass, driver);
+ if (driver instanceof HiveDriver) {
+ driver.registerDriverEventListener(driverEventListener);
+ }
+ drivers.put(driverClass.getName(), driver);
log.info("Driver for " + driverClass + " is loaded");
} catch (Exception e) {
log.warn("Could not load the driver:" + driverClass, e);
@@ -330,15 +328,15 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
throw new LensException("No drivers specified");
}
try {
- Class<? extends DriverSelector> driverSelectorClass = conf.getClass(LensConfConstants.DRIVER_SELECTOR_CLASS,
+ Class<? extends DriverSelector> driverSelectorClass = conf.getClass(DRIVER_SELECTOR_CLASS,
MinQueryCostSelector.class,
DriverSelector.class);
log.info("Using driver selector class: " + driverSelectorClass.getCanonicalName());
driverSelector = driverSelectorClass.newInstance();
} catch (Exception e) {
throw new LensException("Couldn't instantiate driver selector class. Class name: "
- + conf.get(LensConfConstants.DRIVER_SELECTOR_CLASS) + ". Please supply a valid value for "
- + LensConfConstants.DRIVER_SELECTOR_CLASS);
+ + conf.get(DRIVER_SELECTOR_CLASS) + ". Please supply a valid value for "
+ + DRIVER_SELECTOR_CLASS);
}
}
@@ -928,8 +926,8 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
LOG.error(e);
throw new IllegalStateException("Could not load drivers", e);
}
- maxFinishedQueries = conf.getInt(LensConfConstants.MAX_NUMBER_OF_FINISHED_QUERY,
- LensConfConstants.DEFAULT_FINISHED_QUERIES);
+ maxFinishedQueries = conf.getInt(MAX_NUMBER_OF_FINISHED_QUERY,
+ DEFAULT_FINISHED_QUERIES);
initalizeFinishedQueryStore(conf);
log.info("Query execution service initialized");
}
@@ -1043,12 +1041,12 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
}
private void startEstimatePool() {
- int minPoolSize = conf.getInt(LensConfConstants.ESTIMATE_POOL_MIN_THREADS,
- LensConfConstants.DEFAULT_ESTIMATE_POOL_MIN_THREADS);
- int maxPoolSize = conf.getInt(LensConfConstants.ESTIMATE_POOL_MAX_THREADS,
- LensConfConstants.DEFAULT_ESTIMATE_POOL_MAX_THREADS);
- int keepAlive = conf.getInt(LensConfConstants.ESTIMATE_POOL_KEEP_ALIVE_MILLIS,
- LensConfConstants.DEFAULT_ESTIMATE_POOL_KEEP_ALIVE_MILLIS);
+ int minPoolSize = conf.getInt(ESTIMATE_POOL_MIN_THREADS,
+ DEFAULT_ESTIMATE_POOL_MIN_THREADS);
+ int maxPoolSize = conf.getInt(ESTIMATE_POOL_MAX_THREADS,
+ DEFAULT_ESTIMATE_POOL_MAX_THREADS);
+ int keepAlive = conf.getInt(ESTIMATE_POOL_KEEP_ALIVE_MILLIS,
+ DEFAULT_ESTIMATE_POOL_KEEP_ALIVE_MILLIS);
final ThreadFactory defaultFactory = Executors.defaultThreadFactory();
final AtomicInteger thId = new AtomicInteger();
@@ -1111,8 +1109,8 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
// Wait for all rewrite and estimates to finish
try {
- long estimateLatchTimeout = ctx.getConf().getLong(LensConfConstants.ESTIMATE_TIMEOUT_MILLIS,
- LensConfConstants.DEFAULT_ESTIMATE_TIMEOUT_MILLIS);
+ long estimateLatchTimeout = ctx.getConf().getLong(ESTIMATE_TIMEOUT_MILLIS,
+ DEFAULT_ESTIMATE_TIMEOUT_MILLIS);
boolean completed = estimateCompletionLatch.await(estimateLatchTimeout, TimeUnit.MILLISECONDS);
// log operations yet to complete and check if we can proceed with at least one driver
@@ -2157,7 +2155,7 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
private QueryContext createResourceQuery(String command, LensSessionHandle sessionHandle, LensDriver driver)
throws LensException {
LensConf qconf = new LensConf();
- qconf.addProperty(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+ qconf.addProperty(QUERY_PERSISTENT_RESULT_INDRIVER, "false");
QueryContext addQuery = QueryContext.createContextWithSingleDriver(command,
getSession(sessionHandle).getLoggedInUser(), qconf, getLensConf(
sessionHandle, qconf), driver, sessionHandle.getPublicId().toString(), true);
@@ -2330,7 +2328,7 @@ public class QueryExecutionServiceImpl extends LensService implements QueryExecu
log.warn("Unable to get status for Result Directory", e);
throw new NotFoundException("Http result not available for query:" + queryHandle.toString());
}
- String resultFSReadUrl = ctx.getConf().get(LensConfConstants.RESULT_FS_READ_URL);
+ String resultFSReadUrl = ctx.getConf().get(RESULT_FS_READ_URL);
if (resultFSReadUrl != null) {
try {
URI resultReadPath = new URI(resultFSReadUrl + resultPath.toUri().getPath() + "?op=OPEN&user.name="
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server/src/main/java/org/apache/lens/server/user/DatabaseUserConfigLoader.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/user/DatabaseUserConfigLoader.java b/lens-server/src/main/java/org/apache/lens/server/user/DatabaseUserConfigLoader.java
index ce0d112..e5e91b8 100644
--- a/lens-server/src/main/java/org/apache/lens/server/user/DatabaseUserConfigLoader.java
+++ b/lens-server/src/main/java/org/apache/lens/server/user/DatabaseUserConfigLoader.java
@@ -39,7 +39,7 @@ import com.google.common.cache.CacheBuilder;
/**
* The Class DatabaseUserConfigLoader.
*/
-public class DatabaseUserConfigLoader extends UserConfigLoader {
+public class DatabaseUserConfigLoader implements UserConfigLoader {
/** The query sql. */
protected final String querySql;
@@ -49,6 +49,7 @@ public class DatabaseUserConfigLoader extends UserConfigLoader {
/** The cache. */
protected final Cache<String, Map<String, String>> cache;
+ private final HiveConf hiveConf;
/** The ds. */
protected BasicDataSource ds;
@@ -60,7 +61,7 @@ public class DatabaseUserConfigLoader extends UserConfigLoader {
* @throws UserConfigLoaderException the user config loader exception
*/
public DatabaseUserConfigLoader(HiveConf conf) throws UserConfigLoaderException {
- super(conf);
+ this.hiveConf = conf;
querySql = conf.get(LensConfConstants.USER_RESOLVER_DB_QUERY);
keys = conf.get(LensConfConstants.USER_RESOLVER_DB_KEYS).split("\\s*,\\s*", -1);
cache = CacheBuilder.newBuilder()
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server/src/main/java/org/apache/lens/server/user/FixedUserConfigLoader.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/user/FixedUserConfigLoader.java b/lens-server/src/main/java/org/apache/lens/server/user/FixedUserConfigLoader.java
index 5813ac0..0c53b28 100644
--- a/lens-server/src/main/java/org/apache/lens/server/user/FixedUserConfigLoader.java
+++ b/lens-server/src/main/java/org/apache/lens/server/user/FixedUserConfigLoader.java
@@ -26,29 +26,28 @@ import org.apache.lens.server.api.user.UserConfigLoader;
import org.apache.hadoop.hive.conf.HiveConf;
+import com.google.common.collect.Maps;
+
/**
* The Class FixedUserConfigLoader.
*/
-public class FixedUserConfigLoader extends UserConfigLoader {
+public class FixedUserConfigLoader implements UserConfigLoader {
+
+ private final String fixedValue;
- /**
- * Instantiates a new fixed user config loader.
- *
- * @param conf the conf
- */
public FixedUserConfigLoader(HiveConf conf) {
- super(conf);
+ fixedValue = conf.get(LensConfConstants.USER_RESOLVER_FIXED_VALUE);
}
/*
- * (non-Javadoc)
- *
- * @see org.apache.lens.server.user.UserConfigLoader#getUserConfig(java.lang.String)
- */
+ * (non-Javadoc)
+ *
+ * @see org.apache.lens.server.user.UserConfigLoader#getUserConfig(java.lang.String)
+ */
@Override
public Map<String, String> getUserConfig(String loggedInUser) {
- HashMap<String, String> userConfig = new HashMap<String, String>();
- userConfig.put(LensConfConstants.SESSION_CLUSTER_USER, hiveConf.get(LensConfConstants.USER_RESOLVER_FIXED_VALUE));
+ HashMap<String, String> userConfig = Maps.newHashMap();
+ userConfig.put(LensConfConstants.SESSION_CLUSTER_USER, fixedValue);
return userConfig;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java b/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java
index 009e34a..1c025dd 100644
--- a/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java
+++ b/lens-server/src/main/java/org/apache/lens/server/user/PropertyBasedUserConfigLoader.java
@@ -18,10 +18,7 @@
*/
package org.apache.lens.server.user;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -32,13 +29,15 @@ import org.apache.lens.server.api.user.UserConfigLoaderException;
import org.apache.hadoop.hive.conf.HiveConf;
+import com.google.common.collect.Maps;
+
/**
* The Class PropertyBasedUserConfigLoader.
*/
-public class PropertyBasedUserConfigLoader extends UserConfigLoader {
+public class PropertyBasedUserConfigLoader implements UserConfigLoader {
/** The user map. */
- private HashMap<String, Map<String, String>> userMap;
+ private HashMap<String, Map<String, String>> userMap = Maps.newHashMap();
/**
* Instantiates a new property based user config loader.
@@ -47,10 +46,8 @@ public class PropertyBasedUserConfigLoader extends UserConfigLoader {
* @throws UserConfigLoaderException the user config loader exception
*/
public PropertyBasedUserConfigLoader(HiveConf conf) throws UserConfigLoaderException {
- super(conf);
- userMap = new HashMap<String, Map<String, String>>();
Properties properties = new Properties();
- String filename = hiveConf.get(LensConfConstants.USER_RESOLVER_PROPERTYBASED_FILENAME, null);
+ String filename = conf.get(LensConfConstants.USER_RESOLVER_PROPERTYBASED_FILENAME, null);
if (filename == null) {
throw new UserConfigLoaderException("property file path not provided for property based resolver."
+ "Please set property " + LensConfConstants.USER_RESOLVER_PROPERTYBASED_FILENAME);
http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c7261d12/lens-server/src/test/java/org/apache/lens/server/user/FooBarConfigLoader.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/user/FooBarConfigLoader.java b/lens-server/src/test/java/org/apache/lens/server/user/FooBarConfigLoader.java
index 0a319ef..d0c5816 100644
--- a/lens-server/src/test/java/org/apache/lens/server/user/FooBarConfigLoader.java
+++ b/lens-server/src/test/java/org/apache/lens/server/user/FooBarConfigLoader.java
@@ -21,8 +21,6 @@ package org.apache.lens.server.user;
import java.util.HashMap;
import java.util.Map;
-import org.apache.lens.server.api.error.LensException;
-import org.apache.lens.server.api.query.QueryContext;
import org.apache.lens.server.api.user.UserConfigLoader;
import org.apache.hadoop.hive.conf.HiveConf;
@@ -30,7 +28,7 @@ import org.apache.hadoop.hive.conf.HiveConf;
/**
* The Class FooBarConfigLoader.
*/
-public class FooBarConfigLoader extends UserConfigLoader {
+public class FooBarConfigLoader implements UserConfigLoader {
/** The const hash map. */
public static final HashMap<String, String> CONST_HASH_MAP = new HashMap<String, String>() {
@@ -45,7 +43,6 @@ public class FooBarConfigLoader extends UserConfigLoader {
* @param conf the conf
*/
public FooBarConfigLoader(HiveConf conf) {
- super(conf);
}
/*
@@ -57,10 +54,4 @@ public class FooBarConfigLoader extends UserConfigLoader {
public Map<String, String> getUserConfig(String loggedInUser) {
return CONST_HASH_MAP;
}
-
- @Override
- public void preSubmit(QueryContext ctx) throws LensException {
- super.preSubmit(ctx);
- ctx.getSelectedDriverConf().set("random.conf.key", "random.conf.value");
- }
}