----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/39842/#review108098 -----------------------------------------------------------
Ship it! Ship It! - Amareshwari Sriramadasu On Nov. 26, 2015, 8:33 a.m., Puneet Gupta wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/39842/ > ----------------------------------------------------------- > > (Updated Nov. 26, 2015, 8:33 a.m.) > > > Review request for lens, Amareshwari Sriramadasu and Rajat Khandelwal. > > > Bugs: LENS-123 > https://issues.apache.org/jira/browse/LENS-123 > > > Repository: lens > > > Description > ------- > > Ability to load multiple drivers on lens server. > > As of now only one driver instance of each type (hive,jdbc,es,etc) can be > loaded by lens server. Hence lens can not support for example, two jdbc > instances, one for MySql and one for Vertica or just two different MySQl > deployments. This can be a big limitation for some deployments. > > Made below changes in fix > 1. Based on the approaches discussed in JIRA(LENS-123), the below folder > structure was picked. (Please refer to the discussion on JIRA if required - > last few comments ) > -conf > --drivers > ---hive > ----driver1 > -----hivedriver-site.xml > ----driver2 > -----hivedriver-site.xml > ---jdbc > ----driver1 > -----jdbcdriver-site.xml > ----driver2 > -----jdbcdriver-site.xml > Note: drivers configuration is read from "drivers" directory under conf > location. Conf loaction is set while starting the server as -Dconfig.location > = "<conf path>" > > 2. Added an abstract class > "org.apache.lens.server.api.driver.AbstractLensDriver". This has common > implemenation for getting lens driver's fully qualified name and some methods > for getting driver specific resource paths. All existing driver > implementations extend this class. In future, we can also add common > functionality here(if required) without affecting existing driver > implementations that extend this abstract class. > > 3. Updated driver interface > -configure method now takes driver name and type configuration parameters. > -added getFullyQualifiedName() method to identify the driver uniquely. > > 4. Value of lens.server.drivers property in lens-site.xml (and > default-lens-site) updated to include driver type and driver class name > (earlier only driver class name was present). > <value>hive:org.apache.lens.driver.hive.HiveDriver,jdbc:org.apache.lens.driver.jdbc.JDBCDriver</value> > > 5. Updated LensServerDAO to use driver qualified name instead of driver class > name. The table column name is chnaged to drivername form driverclass > > 6. The driver instance was earlier referred to by its class name > (Example:org.apache.lens.driver.hive.HiveDriver) everywhere in code. This is > now changed to driver's fully qualified name which has the driver type and > driver name (Example :hive/hive1) > > 7. All metrics were also relying on driver class name. This is also changed > to driver's fully qualified name. > > 8. Updated driver folder struture for test cases and lens server build (as > per point1). > > 9. Query execution service will fail to start if no drivers are found. (This > is a change from previous flow . We can discuss this if req.) > > > Pending ( will upload this soon) > 1. Adding test cases to test multiple drivers > 2. updating documentation > > Future Enhancements(that can be taken up as a separate JIRA) > 1.Multiple versions of a datasource to be supported ( say Hive and Hive on > spark use different versions of Hive. This will not work as of now as we have > common Hive jars as part of war classpath. We need to have driver specific > jars which can have different version. For this, the jars and other hive > version specific resources should be picked from driver's folder by a > separate class loader). > > > Diffs > ----- > > lens-api/src/main/java/org/apache/lens/api/query/LensPreparedQuery.java > 9595ce9 > lens-api/src/main/java/org/apache/lens/api/query/LensQuery.java 204ecee > lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java > 83b919b > lens-cli/src/test/resources/drivers/hive/hive1/hivedriver-site.xml > PRE-CREATION > lens-client/src/main/java/org/apache/lens/client/LensStatement.java 0a511f0 > lens-client/src/test/resources/drivers/hive/hive1/hivedriver-site.xml > PRE-CREATION > > lens-cube/src/test/java/org/apache/lens/driver/cube/TestMinCostSelector.java > 72f1497 > lens-driver-es/src/main/java/org/apache/lens/driver/es/ESDriver.java > 14d9f99 > lens-driver-es/src/test/java/org/apache/lens/driver/es/ESDriverTest.java > f453416 > lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java > c96ef20 > > lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestHiveDriver.java > fc57c94 > > lens-driver-hive/src/test/java/org/apache/lens/driver/hive/TestRemoteHiveDriver.java > 98edc28 > lens-driver-hive/src/test/resources/drivers/hive/hive1/hivedriver-site.xml > PRE-CREATION > lens-driver-hive/src/test/resources/hivedriver-site.xml 613938d > lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java > a8b980f > > lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java > 7772d16 > > lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJDBCFinal.java > 053e20d > > lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java > 425bd6f > lens-driver-jdbc/src/test/resources/drivers/jdbc/jdbc1/jdbcdriver-site.xml > PRE-CREATION > lens-driver-jdbc/src/test/resources/jdbcdriver-site.xml 1202074 > lens-ml-lib/src/test/resources/drivers/hive/hive1/hivedriver-site.xml > PRE-CREATION > lens-ml-lib/src/test/resources/lens-site.xml 3d5dbef > > lens-query-lib/src/test/java/org/apache/lens/lib/query/TestAbstractFileFormatter.java > 40e1cdc > > lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java > 7ee0749 > > lens-server-api/src/main/java/org/apache/lens/server/api/driver/AbstractLensDriver.java > PRE-CREATION > > lens-server-api/src/main/java/org/apache/lens/server/api/driver/LensDriver.java > a5a60d7 > > lens-server-api/src/main/java/org/apache/lens/server/api/query/AbstractQueryContext.java > 0c980a2 > > lens-server-api/src/main/java/org/apache/lens/server/api/query/DriverSelectorQueryContext.java > feac938 > > lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java > 89053aa > > lens-server-api/src/main/java/org/apache/lens/server/api/query/PreparedQueryContext.java > b6f669b > > lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java > 9b491d1 > > lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java > 2d86589 > > lens-server-api/src/test/java/org/apache/lens/server/api/query/MockQueryContext.java > fd6b560 > > lens-server-api/src/test/java/org/apache/lens/server/api/query/TestAbstractQueryContext.java > e41f2f4 > lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java > b9dd286 > > lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java > fdc8bfd > lens-server/src/main/java/org/apache/lens/server/rewrite/RewriteUtil.java > 6c464fb > > lens-server/src/main/java/org/apache/lens/server/session/LensSessionImpl.java > 9d8f198 > lens-server/src/main/resources/lensserver-default.xml 5f268cb > lens-server/src/test/java/org/apache/lens/server/LensJerseyTest.java > 3dad050 > lens-server/src/test/java/org/apache/lens/server/TestServerRestart.java > 49d62f9 > > lens-server/src/test/java/org/apache/lens/server/query/TestEventService.java > 1dab35e > lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java > bc1463f > > lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java > c37b0ed > lens-server/src/test/java/org/apache/lens/server/rewrite/TestRewriting.java > 2827b96 > lens-server/src/test/resources/drivers/hive/hive1/hivedriver-site.xml > PRE-CREATION > lens-server/src/test/resources/drivers/hive/hive2/hivedriver-site.xml > PRE-CREATION > lens-server/src/test/resources/drivers/jdbc/jdbc1/jdbcdriver-site.xml > PRE-CREATION > > lens-server/src/test/resources/drivers/mock/fail1/failing-query-driver-site.xml > PRE-CREATION > lens-server/src/test/resources/failing-query-driver-site.xml fee022d > lens-server/src/test/resources/hivedriver-site.xml f2aed88 > lens-server/src/test/resources/jdbcdriver-site.xml 1b14f54 > lens-server/src/test/resources/lens-site.xml cc887ef > src/site/apt/admin/config-server.apt 141f2b3 > src/site/apt/admin/config.apt 88c1489 > src/site/apt/lenshome/install-and-run.apt 9eadc5c > tools/conf-pseudo-distr/server/drivers/hive/hive1/hivedriver-site.xml > PRE-CREATION > tools/conf-pseudo-distr/server/drivers/jdbc/jdbc1/jdbcdriver-site.xml > PRE-CREATION > tools/conf-pseudo-distr/server/hivedriver-site.xml 4804356 > tools/conf-pseudo-distr/server/jdbcdriver-site.xml 37540dd > tools/conf-pseudo-distr/server/lens-site.xml f43d07e > tools/conf/server/drivers/hive/hive1/hivedriver-site.xml PRE-CREATION > tools/conf/server/drivers/jdbc/jdbc1/jdbcdriver-site.xml PRE-CREATION > tools/conf/server/hivedriver-site.xml 2e8e7fa > tools/conf/server/jdbcdriver-site.xml 37540dd > tools/conf/server/lens-site.xml 2b12b83 > > Diff: https://reviews.apache.org/r/39842/diff/ > > > Testing > ------- > > [INFO] Reactor Summary: > [INFO] > [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.090s] > [INFO] Lens .............................................. SUCCESS [2.900s] > [INFO] Lens API .......................................... SUCCESS [25.172s] > [INFO] Lens API for server and extensions ................ SUCCESS [24.540s] > [INFO] Lens Cube ......................................... SUCCESS [5:17.973s] > [INFO] Lens DB storage ................................... SUCCESS [20.026s] > [INFO] Lens Query Library ................................ SUCCESS [15.835s] > [INFO] Lens Hive Driver .................................. SUCCESS [2:54.352s] > [INFO] Lens Driver for JDBC .............................. SUCCESS [39.054s] > [INFO] Lens Elastic Search Driver ........................ SUCCESS [19.714s] > [INFO] Lens Server ....................................... SUCCESS [8:17.418s] > [INFO] Lens client ....................................... SUCCESS [38.221s] > [INFO] Lens CLI .......................................... SUCCESS [56.723s] > [INFO] Lens Examples ..................................... SUCCESS [9.847s] > [INFO] Lens Ship Jars to Distributed Cache ............... SUCCESS [1.488s] > [INFO] Lens Distribution ................................. SUCCESS [9.897s] > [INFO] Lens ML Lib ....................................... SUCCESS [1:22.714s] > [INFO] Lens ML Ext Distribution .......................... SUCCESS [1.841s] > [INFO] Lens Regression ................................... SUCCESS [12.622s] > [INFO] Lens UI ........................................... SUCCESS [26.741s] > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD SUCCESS > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 23:00.146s > [INFO] Finished at: Mon Nov 02 03:14:06 UTC 2015 > [INFO] Final Memory: 198M/2037M > [INFO] > ------------------------------------------------------------------------ > > Tested lens-examples also after making the changes. > > > Thanks, > > Puneet Gupta > >