You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by ra...@apache.org on 2015/10/19 02:43:38 UTC

lens git commit: LENS-815 : Provide an option to list queries by driver

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 <de...@gmail.com>
Authored: Mon Oct 19 06:13:25 2015 +0530
Committer: raju <ra...@apache.org>
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 &gt;= fromDate)
    * @param toDate    to date to search queries in a time range, the range is inclusive(toDate &gt;= 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&gt;=fromDate)
    * @param toDate    the to date, inclusive(toDate&gt;=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);
   }