LENS-224: FinishedLensQuery is not storing selectedDriver
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/e5b793c8 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/e5b793c8 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/e5b793c8 Branch: refs/heads/current-release-line Commit: e5b793c83f2a627d049fac7de2ceee7a730574de Parents: 5bae273 Author: Deepak Barr <[email protected]> Authored: Mon Sep 28 19:03:15 2015 +0530 Committer: Rajat Khandelwal <[email protected]> Committed: Mon Sep 28 19:03:15 2015 +0530 ---------------------------------------------------------------------- .../server/api/query/FinishedLensQuery.java | 34 ++++++++++++++++++-- .../apache/lens/server/query/LensServerDAO.java | 10 +++--- 2 files changed, 37 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/e5b793c8/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java index 7a06c44..8308198 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/FinishedLensQuery.java @@ -19,6 +19,7 @@ package org.apache.lens.server.api.query; import java.util.Collection; +import java.util.Iterator; import org.apache.lens.api.LensConf; import org.apache.lens.api.query.QueryHandle; @@ -164,6 +165,13 @@ public class FinishedLensQuery { @Setter private String queryName; + /** + * The selected driver class name. + */ + @Getter + @Setter + private String driverClass; + @Getter private LensDriver selectedDriver; @@ -195,11 +203,21 @@ public class FinishedLensQuery { this.queryName = ctx.getQueryName().toLowerCase(); } this.selectedDriver = ctx.getSelectedDriver(); + if (null != ctx.getSelectedDriver()) { + this.driverClass = ctx.getSelectedDriver().getClass().getName(); + } } public QueryContext toQueryContext(Configuration conf, Collection<LensDriver> drivers) { - QueryContext qctx = new QueryContext(userQuery, submitter, new LensConf(), conf, drivers, null, submissionTime, - false); + + if (null == selectedDriver && null != driverClass) { + selectedDriver = getDriverFromClassName(drivers); + } + + QueryContext qctx = + new QueryContext(userQuery, submitter, new LensConf(), conf, drivers, selectedDriver, submissionTime, + false); + qctx.setQueryHandle(QueryHandle.fromString(handle)); qctx.setLaunchTime(this.startTime); qctx.setEndTime(getEndTime()); @@ -212,6 +230,18 @@ public class FinishedLensQuery { return qctx; } + private LensDriver getDriverFromClassName(Collection<LensDriver> drivers) { + Iterator<LensDriver> iterator = drivers.iterator(); + while (iterator.hasNext()) { + LensDriver driver = iterator.next(); + if (driverClass.equals(driver.getClass().getName())) { + //TODO : LENS-123 - Ability to load different instances of same driver class + return driver; + } + } + return null; + } + public ImmutableSet<WaitingQueriesSelectionPolicy> getDriverSelectionPolicies() { return this.selectedDriver.getWaitingQuerySelectionPolicies(); } http://git-wip-us.apache.org/repos/asf/lens/blob/e5b793c8/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java index 59b1221..8a2ac19 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java @@ -85,8 +85,8 @@ public class LensServerDAO { + "userquery varchar(10000) not null," + "submitter varchar(255) not null," + "starttime bigint, " + "endtime bigint," + "result varchar(255)," + "status varchar(255), " + "metadata varchar(100000), " + "rows int, " + "filesize bigint, " + "errormessage varchar(10000), " + "driverstarttime bigint, " - + "driverendtime bigint, " + "metadataclass varchar(10000), " + "queryname varchar(255), " - + "submissiontime bigint" + ")"; + + "driverendtime bigint, " + "metadataclass varchar(10000), " + "driverclass varchar(10000), " + + "queryname varchar(255), " + "submissiontime bigint" + ")"; try { QueryRunner runner = new QueryRunner(ds); runner.update(sql); @@ -109,15 +109,15 @@ public class LensServerDAO { Connection conn = null; String sql = "insert into finished_queries (handle, userquery,submitter," + "starttime,endtime,result,status,metadata,rows,filesize," - + "errormessage,driverstarttime,driverendtime, metadataclass, queryname, submissiontime)" - + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + + "errormessage,driverstarttime,driverendtime, metadataclass, driverclass, queryname, submissiontime)" + + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; try { conn = getConnection(); QueryRunner runner = new QueryRunner(); runner.update(conn, sql, query.getHandle(), query.getUserQuery(), query.getSubmitter(), query.getStartTime(), query.getEndTime(), query.getResult(), query.getStatus(), query.getMetadata(), query.getRows(), query.getFileSize(), query.getErrorMessage(), query.getDriverStartTime(), query.getDriverEndTime(), - query.getMetadataClass(), query.getQueryName(), query.getSubmissionTime()); + query.getMetadataClass(), query.getDriverClass(), query.getQueryName(), query.getSubmissionTime()); conn.commit(); } finally { DbUtils.closeQuietly(conn);
