Repository: lens Updated Branches: refs/heads/master c01c2bde1 -> 1216a7043
LENS-919: Persist priotry for finished queries in DB Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/1216a704 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/1216a704 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/1216a704 Branch: refs/heads/master Commit: 1216a7043fc459ea1b6aec0f6a6509073852cee3 Parents: c01c2bd Author: Puneet Gupta <[email protected]> Authored: Sat Mar 12 07:20:03 2016 +0800 Committer: raju <[email protected]> Committed: Sat Mar 12 07:20:03 2016 +0800 ---------------------------------------------------------------------- .../server/api/query/FinishedLensQuery.java | 8 +++++++ .../lens/server/api/query/QueryContext.java | 1 + .../apache/lens/server/query/LensServerDAO.java | 20 +++++++++--------- .../apache/lens/server/query/TestLensDAO.java | 3 +++ .../lens/server/query/TestQueryService.java | 22 +++++++++++++------- 5 files changed, 37 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/1216a704/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 a57a6e4..d24daec 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 @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.Iterator; import org.apache.lens.api.LensConf; +import org.apache.lens.api.Priority; import org.apache.lens.api.query.QueryHandle; import org.apache.lens.api.query.QueryStatus; import org.apache.lens.server.api.driver.LensDriver; @@ -30,6 +31,7 @@ import org.apache.lens.server.api.query.collect.WaitingQueriesSelectionPolicy; import org.apache.hadoop.conf.Configuration; import com.google.common.collect.ImmutableSet; + import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; @@ -168,6 +170,10 @@ public class FinishedLensQuery { @Getter private LensDriver selectedDriver; + @Getter + @Setter + private String priority; + /** * Instantiates a new finished lens query. */ @@ -199,6 +205,7 @@ public class FinishedLensQuery { if (null != ctx.getSelectedDriver()) { this.driverName = ctx.getSelectedDriver().getFullyQualifiedName(); } + this.priority = ctx.getPriority().toString(); } public QueryContext toQueryContext(Configuration conf, Collection<LensDriver> drivers) { @@ -220,6 +227,7 @@ public class FinishedLensQuery { qctx.getDriverStatus().setDriverFinishTime(getDriverEndTime()); qctx.setResultSetPath(getResult()); qctx.setQueryName(getQueryName()); + qctx.setPriority(Priority.valueOf(getPriority())); return qctx; } http://git-wip-us.apache.org/repos/asf/lens/blob/1216a704/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java index 96846c1..fba7ad7 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java @@ -76,6 +76,7 @@ public class QueryContext extends AbstractQueryContext { * The priority. */ @Getter + @Setter private Priority priority; /** http://git-wip-us.apache.org/repos/asf/lens/blob/1216a704/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 d8e654d..1d6125c 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 @@ -82,10 +82,10 @@ public class LensServerDAO { */ public void createFinishedQueriesTable() throws Exception { String sql = "CREATE TABLE if not exists finished_queries (handle varchar(255) not null unique," - + "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, " + "drivername varchar(10000), " + + "userquery varchar(10000) not null," + "submitter varchar(255) not null," + "priority varchar(255), " + + "starttime bigint, " + "endtime bigint," + "result varchar(255)," + "status varchar(255), " + + "metadata varchar(100000), " + "rows int, " + "filesize bigint, " + "errormessage varchar(10000), " + + "driverstarttime bigint, " + "driverendtime bigint, " + "drivername varchar(10000), " + "queryname varchar(255), " + "submissiontime bigint" + ")"; try { QueryRunner runner = new QueryRunner(ds); @@ -107,17 +107,17 @@ public class LensServerDAO { if (alreadyExisting == null) { // The expected case Connection conn = null; - String sql = "insert into finished_queries (handle, userquery,submitter," + String sql = "insert into finished_queries (handle, userquery, submitter, priority, " + "starttime,endtime,result,status,metadata,rows,filesize," + "errormessage,driverstarttime,driverendtime, drivername, queryname, submissiontime)" - + " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + + " 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.getDriverName(), query.getQueryName(), query.getSubmissionTime()); + runner.update(conn, sql, query.getHandle(), query.getUserQuery(), query.getSubmitter(), query.getPriority(), + query.getStartTime(), query.getEndTime(), query.getResult(), query.getStatus(), query.getMetadata(), + query.getRows(), query.getFileSize(), query.getErrorMessage(), query.getDriverStartTime(), + query.getDriverEndTime(), query.getDriverName(), query.getQueryName(), query.getSubmissionTime()); conn.commit(); } finally { DbUtils.closeQuietly(conn); http://git-wip-us.apache.org/repos/asf/lens/blob/1216a704/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java b/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java index 760e306..7679a06 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.lens.api.LensConf; import org.apache.lens.api.LensSessionHandle; +import org.apache.lens.api.Priority; import org.apache.lens.api.query.LensQuery; import org.apache.lens.api.query.QueryHandle; import org.apache.lens.api.query.QueryStatus; @@ -69,6 +70,7 @@ public class TestLensDAO { queryContext.getDriverContext().setSelectedDriver(new MockDriver()); FinishedLensQuery finishedLensQuery = new FinishedLensQuery(queryContext); finishedLensQuery.setStatus(QueryStatus.Status.SUCCESSFUL.name()); + finishedLensQuery.setPriority(Priority.NORMAL.toString()); // Validate JDBC driver RS Meta can be deserialized @@ -120,6 +122,7 @@ public class TestLensDAO { Assert.assertEquals(actualRsMeta.getColumns().get(0).getName().toLowerCase(), "handle"); Assert.assertEquals(actual.getHandle(), finishedHandle); + Assert.assertEquals(Priority.valueOf(actual.getPriority()), Priority.NORMAL); // Test find finished queries LensSessionHandle session = service.openSession("foo@localhost", "bar", new HashMap<String, String>()); http://git-wip-us.apache.org/repos/asf/lens/blob/1216a704/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java ---------------------------------------------------------------------- diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java index 699fa68..80c1094 100644 --- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java +++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java @@ -38,6 +38,7 @@ import javax.ws.rs.core.*; import org.apache.lens.api.APIResult; import org.apache.lens.api.LensConf; import org.apache.lens.api.LensSessionHandle; +import org.apache.lens.api.Priority; import org.apache.lens.api.jaxb.LensJAXBContextResolver; import org.apache.lens.api.query.*; import org.apache.lens.api.query.QueryStatus.Status; @@ -290,15 +291,15 @@ public class TestQueryService extends LensJerseyTest { Response response = target.path(handle.toString() + "001").queryParam("sessionid", lensSessionId).request(mt).get(); assertEquals(response.getStatus(), 404); - LensQuery ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request(mt) + LensQuery query = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request(mt) .get(LensQuery.class); // wait till the query finishes - QueryStatus stat = ctx.getStatus(); + QueryStatus stat = query.getStatus(); while (!stat.finished()) { Thread.sleep(1000); - ctx = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request(mt).get(LensQuery.class); - stat = ctx.getStatus(); + query = target.path(handle.toString()).queryParam("sessionid", lensSessionId).request(mt).get(LensQuery.class); + stat = query.getStatus(); /* Commented due to same issue as: https://issues.apache.org/jira/browse/LENS-683 switch (stat.getStatus()) { @@ -312,9 +313,16 @@ public class TestQueryService extends LensJerseyTest { }*/ } - assertTrue(ctx.getSubmissionTime() > 0); - assertTrue(ctx.getFinishTime() > 0); - assertEquals(ctx.getStatus().getStatus(), Status.SUCCESSFUL); + assertTrue(query.getSubmissionTime() > 0); + assertTrue(query.getFinishTime() > 0); + assertEquals(query.getStatus().getStatus(), Status.SUCCESSFUL); + + assertEquals(query.getPriority(), Priority.LOW); + //Check Query Priority can be read even after query is purged i,e query details are read from DB. + if (queryService.allQueries.size() > 0) { + Thread.sleep(1000); + } + assertEquals(query.getPriority(), Priority.LOW); // Update conf for query final FormDataMultiPart confpart = new FormDataMultiPart();
