You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ya...@apache.org on 2014/08/07 18:41:32 UTC

git commit: Reverted a refactor that broke the build.

Repository: mesos
Updated Branches:
  refs/heads/master 836b0c2d8 -> 8c4f45d67


Reverted a refactor that broke the build.


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8c4f45d6
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8c4f45d6
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8c4f45d6

Branch: refs/heads/master
Commit: 8c4f45d67be22cfe252ad6ed27a79ad4a1f972c6
Parents: 836b0c2
Author: Jiang Yan Xu <ya...@jxu.me>
Authored: Thu Aug 7 09:40:35 2014 -0700
Committer: Jiang Yan Xu <ya...@jxu.me>
Committed: Thu Aug 7 09:40:44 2014 -0700

----------------------------------------------------------------------
 src/master/master.cpp | 40 +++++++++++++++++++++++++---------------
 1 file changed, 25 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/8c4f45d6/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index d279edb..e688b41 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -871,27 +871,35 @@ void Master::visit(const MessageEvent& event)
   // 1) the default RateLimiter is not configured to handle case 2)
   //    above. (or)
   // 2) the principal exists in RateLimits but 'qps' is not set.
-  Option<Owned<BoundedRateLimiter> > limiter;
-  if (principal.isSome() && limiters.contains(principal.get())) {
-    limiter = limiters[principal.get()];
-  } else if ((principal.isNone() || !limiters.contains(principal.get())) &&
-             isRegisteredFramework) {
-    limiter = defaultLimiter;
-  }
+  if (principal.isSome() &&
+      limiters.contains(principal.get()) &&
+      limiters[principal.get()].isSome()) {
+    const Owned<BoundedRateLimiter>& limiter = limiters[principal.get()].get();
 
-  // Now throttle the message if a limiter is found, unless its
-  // capacity is already reached.
-  if (limiter.isSome()) {
-    if (limiter.get()->capacity.isNone() ||
-        limiter.get()->messages < limiter.get()->capacity.get()) {
-      limiter.get()->messages++;
-      limiter.get()->limiter->acquire()
+    if (limiter->capacity.isNone() ||
+        limiter->messages < limiter->capacity.get()) {
+      limiter->messages++;
+      limiter->limiter->acquire()
         .onReady(defer(self(), &Self::throttled, event, principal));
     } else {
       exceededCapacity(
           event,
           principal,
-          limiter.get()->capacity.get());
+          limiter->capacity.get());
+    }
+  } else if ((principal.isNone() || !limiters.contains(principal.get())) &&
+             isRegisteredFramework &&
+             defaultLimiter.isSome()) {
+    if (defaultLimiter.get()->capacity.isNone() ||
+        defaultLimiter.get()->messages < defaultLimiter.get()->capacity.get()) {
+      defaultLimiter.get()->messages++;
+      defaultLimiter.get()->limiter->acquire()
+        .onReady(defer(self(), &Self::throttled, event, None()));
+    } else {
+      exceededCapacity(
+          event,
+          principal,
+          defaultLimiter.get()->capacity.get());
     }
   } else {
     _visit(event);
@@ -938,8 +946,10 @@ void Master::throttled(
   // We already know a RateLimiter is used to throttle this event so
   // here we only need to determine which.
   if (principal.isSome()) {
+    CHECK_SOME(limiters[principal.get()]);
     limiters[principal.get()].get()->messages--;
   } else {
+    CHECK_SOME(defaultLimiter);
     defaultLimiter.get()->messages--;
   }