This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git


The following commit(s) were added to refs/heads/master by this push:
     new 3337d8a  Decouple health checking from active ack messages. (#3095)
3337d8a is described below

commit 3337d8a643db5028118da56ab0a01b367e99260c
Author: Markus Thömmes <markusthoem...@me.com>
AuthorDate: Tue Dec 12 15:42:56 2017 +0100

    Decouple health checking from active ack messages. (#3095)
    
    Active ack messages are inspected to check whether an invoker has a lot of 
system-level errors and this in turn marks an invoker unhealthy. A sufficient 
number of forced timeouts on active acks will also turn an invoker unhealthy, 
when there's just a longer than expected queue of activations. This commit 
decouples the queue length (load balancing concern) from the health of the 
invoker.
---
 .../main/scala/whisk/core/loadBalancer/LoadBalancerService.scala   | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git 
a/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
 
b/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
index e3776ae..17d8796 100644
--- 
a/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
+++ 
b/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
@@ -152,10 +152,7 @@ class LoadBalancerService(config: WhiskConfig, instance: 
InstanceId, entityStore
         logging.info(this, s"${if (!forced) "received" else "forced"} active 
ack for '$aid'")(tid)
         // Active acks that are received here are strictly from user actions - 
health actions are not part of
         // the load balancer's activation map. Inform the invoker pool 
supervisor of the user action completion.
-        // If the active ack was forced, because the waiting period expired, 
treat it as a failed activation.
-        // A cluster of such failures will eventually turn the invoker 
unhealthy and suspend queuing activations
-        // to that invoker topic.
-        invokerPool ! InvocationFinishedMessage(invoker, isSuccess && !forced)
+        invokerPool ! InvocationFinishedMessage(invoker, isSuccess)
         if (!forced) {
           entry.promise.trySuccess(response)
         } else {
@@ -165,8 +162,6 @@ class LoadBalancerService(config: WhiskConfig, instance: 
InstanceId, entityStore
         // the entry has already been removed but we receive an active ack for 
this activation Id.
         // This happens for health actions, because they don't have an entry 
in Loadbalancerdata or
         // for activations that already timed out.
-        // For both cases, it looks like the invoker works again and we should 
send the status of
-        // the activation to the invokerPool.
         invokerPool ! InvocationFinishedMessage(invoker, isSuccess)
         logging.debug(this, s"received active ack for '$aid' which has no 
entry")(tid)
       case None =>

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <commits@openwhisk.apache.org>'].

Reply via email to