You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pr...@apache.org on 2016/05/03 08:46:47 UTC

lens git commit: LENS-1027: Extend MaxConcurrentDriverQueriesConstraint to support limit on ANY queue

Repository: lens
Updated Branches:
  refs/heads/master dce5a812d -> 34223e880


LENS-1027: Extend MaxConcurrentDriverQueriesConstraint to support limit on ANY queue


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/34223e88
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/34223e88
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/34223e88

Branch: refs/heads/master
Commit: 34223e880df7f08912a519349ea6053932f014ea
Parents: dce5a81
Author: Puneet Gupta <pu...@gmail.com>
Authored: Tue May 3 12:15:41 2016 +0530
Committer: Rajat Khandelwal <ra...@gmail.com>
Committed: Tue May 3 12:15:41 2016 +0530

----------------------------------------------------------------------
 .../MaxConcurrentDriverQueriesConstraint.java          |  7 ++++++-
 .../MaxConcurrentDriverQueriesConstraintFactory.java   |  4 +++-
 .../MaxConcurrentDriverQueriesConstraintTest.java      | 13 ++++++++-----
 .../ThreadSafeEstimatedQueryCollectionTest.java        |  3 ++-
 4 files changed, 19 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/34223e88/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraint.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraint.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraint.java
index 58ebd9a..b2319a9 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraint.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraint.java
@@ -36,6 +36,7 @@ public class MaxConcurrentDriverQueriesConstraint implements QueryLaunchingConst
   private final int maxConcurrentQueries;
   private final Map<String, Integer> maxConcurrentQueriesPerQueue;
   private final Map<Priority, Integer> maxConcurrentQueriesPerPriority;
+  private final Integer defaultMaxConcurrentQueriesPerQueueLimit;
 
   @Override
   public boolean allowsLaunchOf(
@@ -57,7 +58,11 @@ public class MaxConcurrentDriverQueriesConstraint implements QueryLaunchingConst
     String queue = candidateQuery.getQueue();
     Integer limit = maxConcurrentQueriesPerQueue.get(queue);
     if (limit == null) {
-      return true;
+      if (defaultMaxConcurrentQueriesPerQueueLimit != null) { //Check if any default limit is enabled for all queues
+        limit = defaultMaxConcurrentQueriesPerQueueLimit;
+      } else {
+        return true;
+      }
     }
     int launchedOnQueue = 0;
     for (QueryContext context : launchedQueries.getQueries(candidateQuery.getSelectedDriver())) {

http://git-wip-us.apache.org/repos/asf/lens/blob/34223e88/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintFactory.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintFactory.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintFactory.java
index 6db7da7..442cd99 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintFactory.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintFactory.java
@@ -36,6 +36,7 @@ public class MaxConcurrentDriverQueriesConstraintFactory
   public static final String MAX_CONCURRENT_QUERIES_KEY = "driver.max.concurrent.launched.queries";
   private static final String PREFIX = MAX_CONCURRENT_QUERIES_KEY + ".per.";
   public static final String MAX_CONCURRENT_QUERIES_PER_QUEUE_KEY = PREFIX + "queue";
+  public static final String DEFAULT_MAX_CONCURRENT_QUERIES_PER_QUEUE_LIMIT_KEY = "*";
   public static final String MAX_CONCURRENT_QUERIES_PER_PRIORITY_KEY = PREFIX + "priority";
   private static final EntryParser<String, Integer> STRING_INT_PARSER = new EntryParser<String, Integer>() {
     @Override
@@ -72,7 +73,8 @@ public class MaxConcurrentDriverQueriesConstraintFactory
       maxConcurrentQueries = Integer.parseInt(maxConcurrentQueriesValue);
     }
     return new MaxConcurrentDriverQueriesConstraint(maxConcurrentQueries, maxConcurrentQueriesPerQueue,
-      maxConcurrentQueriesPerPriority);
+      maxConcurrentQueriesPerPriority,
+      maxConcurrentQueriesPerQueue.get(DEFAULT_MAX_CONCURRENT_QUERIES_PER_QUEUE_LIMIT_KEY));
 
   }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/34223e88/lens-server-api/src/test/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintTest.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintTest.java b/lens-server-api/src/test/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintTest.java
index 4031122..38b74ae 100644
--- a/lens-server-api/src/test/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintTest.java
+++ b/lens-server-api/src/test/java/org/apache/lens/server/api/query/constraint/MaxConcurrentDriverQueriesConstraintTest.java
@@ -46,9 +46,10 @@ public class MaxConcurrentDriverQueriesConstraintTest {
   QueryLaunchingConstraint constraint = factory.create(getConfiguration(
     "driver.max.concurrent.launched.queries", 10
   ));
+
   QueryLaunchingConstraint perQueueConstraint = factory.create(getConfiguration(
     "driver.max.concurrent.launched.queries", 4,
-    "driver.max.concurrent.launched.queries.per.queue", "q1=2,q2=3"
+    "driver.max.concurrent.launched.queries.per.queue", "*=1,q1=2,q2=3"
   ));
 
   QueryLaunchingConstraint perPriorityConstraint = factory.create(getConfiguration(
@@ -73,12 +74,14 @@ public class MaxConcurrentDriverQueriesConstraintTest {
       {queues("q1", "q1"), "q2", true},
       {queues("q1", "q1"), "q3", true},
       {queues("q1", "q1", "q1"), "q2", true}, // hypothetical
-      {queues("q1", "q1", "q2"), "q1", false},
+      {queues("q1", "q1", "q2"), "q1", false}, //q1 limit breached
       {queues("q1", "q2", "q2"), "q1", true},
       {queues("q1", "q2", "q2"), "q2", true},
-      {queues("q1", "q2", "q1", "q2"), "q2", false},
-      {queues("q1", "q2", "q1", "q2"), "q1", false},
-      {queues("q1", "q2", "q1", "q2"), "q3", false},
+      {queues("q1", "q2", "q1", "q2"), "q2", false}, // driver.max.concurrent.launched.queries breached
+      {queues("q1", "q2", "q1", "q2"), "q1", false}, // driver.max.concurrent.launched.queries breached
+      {queues("q1", "q2", "q1", "q2"), "q3", false}, // driver.max.concurrent.launched.queries breached
+      {queues("q1", "q2", "q2"), "q3", true},
+      {queues("q1", "q2", "q3"), "q3", false}, //default max concurrent queries per queue limit breached
     };
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/34223e88/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java b/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java
index e1bf350..c8ebd0c 100644
--- a/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java
+++ b/lens-server/src/test/java/org/apache/lens/server/query/constraint/ThreadSafeEstimatedQueryCollectionTest.java
@@ -52,7 +52,8 @@ public class ThreadSafeEstimatedQueryCollectionTest {
     LensDriver mockDriver = mock(LensDriver.class);
     LensDriver mockDriver2 = mock(LensDriver.class);
 
-    QueryLaunchingConstraint constraint = new MaxConcurrentDriverQueriesConstraint(maxConcurrentQueries, null, null);
+    QueryLaunchingConstraint constraint = new MaxConcurrentDriverQueriesConstraint(maxConcurrentQueries, null,
+      null, null);
     ThreadSafeEstimatedQueryCollection col = new ThreadSafeEstimatedQueryCollection(new
       DefaultEstimatedQueryCollection(new DefaultQueryCollection()));