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 <[email protected]> Authored: Mon Jul 20 12:21:37 2015 +0530 Committer: Amareshwari Sriramadasu <[email protected]> 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"); - } }
