Repository: lens Updated Branches: refs/heads/master deaac5031 -> 892a4c1a3
LENS-815 : Provide an option to list queries by driver Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/892a4c1a Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/892a4c1a Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/892a4c1a Branch: refs/heads/master Commit: 892a4c1a3e0b22a3c41cd2189fcf91f5e38c8b8d Parents: deaac50 Author: Deepak Barr <[email protected]> Authored: Mon Oct 19 06:13:25 2015 +0530 Committer: raju <[email protected]> Committed: Mon Oct 19 06:13:25 2015 +0530 ---------------------------------------------------------------------- .../lens/server/api/query/QueryExecutionService.java | 5 +++-- .../org/apache/lens/server/query/LensServerDAO.java | 10 ++++++++-- .../lens/server/query/QueryExecutionServiceImpl.java | 10 ++++++---- .../apache/lens/server/query/QueryServiceResource.java | 13 ++++++++----- .../apache/lens/server/ui/QueryServiceUIResource.java | 7 ++++--- .../java/org/apache/lens/server/query/TestLensDAO.java | 9 ++++++--- 6 files changed, 35 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/892a4c1a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java index 724e36a..15ed222 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java @@ -228,14 +228,15 @@ public interface QueryExecutionService { * @param state return queries in this state. if null, all queries will be returned * @param user Get queries submitted by a specific user. * If this set to "all", queries of all users are returned + * @param driver Get queries submitted on a specific driver. * @param queryName return queries containing the query name. If null, all queries will be returned * @param fromDate start date of time range interval * @param toDate end date of the time range interval * @return List of query handles * @throws LensException the lens exception */ - List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, String state, String user, String queryName, - long fromDate, long toDate) throws LensException; + List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, String state, String user, String driver, + String queryName, long fromDate, long toDate) throws LensException; /** * Returns all the prepared queries for the specified user. If no user is passed, queries of all users will be http://git-wip-us.apache.org/repos/asf/lens/blob/892a4c1a/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 05bee9e..b9dd286 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 @@ -158,14 +158,15 @@ public class LensServerDAO { * * @param state the state * @param user the user + * @param driverName the driverClass * @param queryName the query name * @param fromDate the from date * @param toDate the to date * @return the list * @throws LensException the lens exception */ - public List<QueryHandle> findFinishedQueries(String state, String user, String queryName, long fromDate, long toDate) - throws LensException { + public List<QueryHandle> findFinishedQueries(String state, String user, String driverName, String queryName, + long fromDate, long toDate) throws LensException { boolean addFilter = StringUtils.isNotBlank(state) || StringUtils.isNotBlank(user) || StringUtils.isNotBlank(queryName); StringBuilder builder = new StringBuilder("SELECT handle FROM finished_queries"); @@ -190,6 +191,11 @@ public class LensServerDAO { params.add("%" + queryName + "%"); } + if (StringUtils.isNotBlank(driverName)) { + filters.add("lower(driverclass)=?"); + params.add(driverName.toLowerCase()); + } + filters.add("submissiontime BETWEEN ? AND ?"); params.add(fromDate); params.add(toDate); http://git-wip-us.apache.org/repos/asf/lens/blob/892a4c1a/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 deb8572..7b15a3c 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 @@ -2040,10 +2040,10 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE * (non-Javadoc) * * @see org.apache.lens.server.api.query.QueryExecutionService#getAllQueries(org.apache.lens.api.LensSessionHandle, - * java.lang.String, java.lang.String, java.lang.String, long, long) + * java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, long) */ @Override - public List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, String state, String userName, + public List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, String state, String userName, String driver, String queryName, long fromDate, long toDate) throws LensException { validateTimeRange(fromDate, toDate); userName = UtilityMethods.removeDomain(userName); @@ -2062,6 +2062,7 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE if (StringUtils.isBlank(userName)) { userName = getSession(sessionHandle).getLoggedInUser(); } + boolean filterByDriver = StringUtils.isNotBlank(driver); List<QueryHandle> all = new ArrayList<QueryHandle>(allQueries.keySet()); Iterator<QueryHandle> itr = all.iterator(); @@ -2071,6 +2072,7 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE long querySubmitTime = context.getSubmissionTime(); if ((filterByStatus && status != context.getStatus().getStatus()) || (filterByQueryName && !context.getQueryName().toLowerCase().contains(queryName)) + || (filterByDriver && !context.getSelectedDriver().getClass().getName().equalsIgnoreCase(driver)) || (!"all".equalsIgnoreCase(userName) && !userName.equalsIgnoreCase(context.getSubmittedUser())) || (!(fromDate <= querySubmitTime && querySubmitTime <= toDate))) { itr.remove(); @@ -2082,8 +2084,8 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE if ("all".equalsIgnoreCase(userName)) { userName = null; } - List<QueryHandle> persistedQueries = lensServerDao.findFinishedQueries(state, userName, queryName, fromDate, - toDate); + List<QueryHandle> persistedQueries = lensServerDao.findFinishedQueries(state, userName, driver, queryName, + fromDate, toDate); if (persistedQueries != null && !persistedQueries.isEmpty()) { log.info("Adding persisted queries {}", persistedQueries.size()); all.addAll(persistedQueries); http://git-wip-us.apache.org/repos/asf/lens/blob/892a4c1a/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java index 96f6aea..08192bd 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java @@ -145,6 +145,7 @@ public class QueryServiceResource { * all the queries will be returned * @param user Returns queries submitted by this user. If set to "all", returns queries of all users. By default, * returns queries of the current user. + * @param driver Get queries submitted on a specific driver. * @param fromDate from date to search queries in a time range, the range is inclusive(submitTime >= fromDate) * @param toDate to date to search queries in a time range, the range is inclusive(toDate >= submitTime) * @return List of {@link QueryHandle} objects @@ -154,14 +155,14 @@ public class QueryServiceResource { @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN}) public List<QueryHandle> getAllQueries(@QueryParam("sessionid") LensSessionHandle sessionid, @DefaultValue("") @QueryParam("state") String state, @DefaultValue("") @QueryParam("queryName") String queryName, - @DefaultValue("") @QueryParam("user") String user, @DefaultValue("-1") @QueryParam("fromDate") long fromDate, - @DefaultValue("-1") @QueryParam("toDate") long toDate) { + @DefaultValue("") @QueryParam("user") String user, @DefaultValue("") @QueryParam("driver") String driver, + @DefaultValue("-1") @QueryParam("fromDate") long fromDate, @DefaultValue("-1") @QueryParam("toDate") long toDate) { checkSessionId(sessionid); try { if (toDate == -1L) { toDate = Long.MAX_VALUE; } - return queryServer.getAllQueries(sessionid, state, user, queryName, fromDate, toDate); + return queryServer.getAllQueries(sessionid, state, user, driver, queryName, fromDate, toDate); } catch (LensException e) { throw new WebApplicationException(e); } @@ -254,6 +255,7 @@ public class QueryServiceResource { * {@link org.apache.lens.api.query.QueryStatus.Status#SUCCESSFUL} cannot be cancelled * @param user If any user is passed, all the queries submitted by the user will be cancelled, otherwise all the * queries will be cancelled + * @param driver Get queries submitted on a specific driver. * @param queryName Cancel queries matching the query name * @param fromDate the from date, inclusive(submitTime>=fromDate) * @param toDate the to date, inclusive(toDate>=submitTime) @@ -267,14 +269,15 @@ public class QueryServiceResource { @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN}) public APIResult cancelAllQueries(@QueryParam("sessionid") LensSessionHandle sessionid, @DefaultValue("") @QueryParam("state") String state, @DefaultValue("") @QueryParam("user") String user, - @DefaultValue("") @QueryParam("queryName") String queryName, + @DefaultValue("") @QueryParam("queryName") String queryName, @DefaultValue("") @QueryParam("driver") String driver, @DefaultValue("-1") @QueryParam("fromDate") long fromDate, @DefaultValue("-1") @QueryParam("toDate") long toDate) { checkSessionId(sessionid); int numCancelled = 0; List<QueryHandle> handles = null; boolean failed = false; try { - handles = getAllQueries(sessionid, state, queryName, user, fromDate, toDate == -1L ? Long.MAX_VALUE : toDate); + handles = getAllQueries(sessionid, state, queryName, user, driver, fromDate, + toDate == -1L ? Long.MAX_VALUE : toDate); for (QueryHandle handle : handles) { if (cancelQuery(sessionid, handle)) { numCancelled++; http://git-wip-us.apache.org/repos/asf/lens/blob/892a4c1a/lens-server/src/main/java/org/apache/lens/server/ui/QueryServiceUIResource.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/ui/QueryServiceUIResource.java b/lens-server/src/main/java/org/apache/lens/server/ui/QueryServiceUIResource.java index 17022aa..424bd87 100644 --- a/lens-server/src/main/java/org/apache/lens/server/ui/QueryServiceUIResource.java +++ b/lens-server/src/main/java/org/apache/lens/server/ui/QueryServiceUIResource.java @@ -106,6 +106,7 @@ public class QueryServiceUIResource { * be returned. Possible states are {@link org.apache.lens.api.query.QueryStatus.Status#values()} * @param user return queries matching the user. If set to "all", return queries of all users. By default, * returns queries of the current user. + * @param driver Get queries submitted on a specific driver. * @param queryName human readable query name set by user (optional) * @param fromDate the from date * @param toDate the to date @@ -116,13 +117,13 @@ public class QueryServiceUIResource { @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN}) public List<QueryHandle> getAllQueries(@QueryParam("publicId") UUID publicId, @DefaultValue("") @QueryParam("state") String state, @DefaultValue("") @QueryParam("user") String user, - @DefaultValue("") @QueryParam("queryName") String queryName, + @DefaultValue("") @QueryParam("driver") String driver, @DefaultValue("") @QueryParam("queryName") String queryName, @DefaultValue("-1") @QueryParam("fromDate") long fromDate, @DefaultValue("-1") @QueryParam("toDate") long toDate) { LensSessionHandle sessionHandle = SessionUIResource.getOpenSession(publicId); checkSessionHandle(sessionHandle); try { - return queryServer.getAllQueries(sessionHandle, state, user, queryName, fromDate, toDate == -1L ? Long.MAX_VALUE - : toDate); + return queryServer.getAllQueries(sessionHandle, state, user, driver, queryName, fromDate, + toDate == -1L ? Long.MAX_VALUE : toDate); } catch (LensException e) { throw new WebApplicationException(e); } http://git-wip-us.apache.org/repos/asf/lens/blob/892a4c1a/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 8c3e2a2..bc1463f 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 @@ -35,6 +35,7 @@ import org.apache.lens.api.query.QueryStatus; import org.apache.lens.driver.jdbc.JDBCResultSet; import org.apache.lens.server.LensJerseyTest; import org.apache.lens.server.LensServices; +import org.apache.lens.server.api.driver.MockDriver; import org.apache.lens.server.api.query.FinishedLensQuery; import org.apache.lens.server.api.query.QueryContext; import org.apache.lens.server.api.query.QueryExecutionService; @@ -68,6 +69,7 @@ public class TestLensDAO extends LensJerseyTest { new Configuration()); long submissionTime = queryContext.getSubmissionTime(); queryContext.setQueryName("daoTestQuery1"); + queryContext.getDriverContext().setSelectedDriver(new MockDriver()); FinishedLensQuery finishedLensQuery = new FinishedLensQuery(queryContext); finishedLensQuery.setStatus(QueryStatus.Status.SUCCESSFUL.name()); @@ -125,8 +127,8 @@ public class TestLensDAO extends LensJerseyTest { // Test find finished queries LensSessionHandle session = service.openSession("foo@localhost", "bar", new HashMap<String, String>()); - List<QueryHandle> persistedHandles = service.lensServerDao.findFinishedQueries(null, null, null, submissionTime, - System.currentTimeMillis()); + List<QueryHandle> persistedHandles = service.lensServerDao.findFinishedQueries(null, null, null, null, + submissionTime, System.currentTimeMillis()); if (persistedHandles != null) { for (QueryHandle handle : persistedHandles) { LensQuery query = service.getQuery(session, handle); @@ -139,7 +141,8 @@ public class TestLensDAO extends LensJerseyTest { System.out.println("@@ State = " + queryContext.getStatus().getStatus().name()); List<QueryHandle> daoTestQueryHandles = service.lensServerDao.findFinishedQueries(finishedLensQuery.getStatus(), - queryContext.getSubmittedUser(), "daotestquery1", -1L, Long.MAX_VALUE); + queryContext.getSubmittedUser(), queryContext.getSelectedDriver().getClass().getName(), "daotestquery1", -1L, + Long.MAX_VALUE); Assert.assertEquals(daoTestQueryHandles.size(), 1); Assert.assertEquals(daoTestQueryHandles.get(0).getHandleId().toString(), finishedHandle); }
