You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by cb...@apache.org on 2018/03/05 07:14:50 UTC

[incubator-openwhisk] branch master updated: Make action-time-limit's system bounds configurable. (#3379)

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

cbickel 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 a6dfcc2  Make action-time-limit's system bounds configurable. (#3379)
a6dfcc2 is described below

commit a6dfcc2a0d3f06bde7483544def8efd904cf213e
Author: Markus Thömmes <ma...@me.com>
AuthorDate: Mon Mar 5 08:14:48 2018 +0100

    Make action-time-limit's system bounds configurable. (#3379)
---
 ansible/roles/controller/tasks/deploy.yml            |  4 ++++
 ansible/roles/invoker/tasks/deploy.yml               |  3 +++
 common/scala/src/main/resources/application.conf     |  7 +++++++
 .../src/main/scala/whisk/core/WhiskConfig.scala      |  1 +
 .../src/main/scala/whisk/core/entity/TimeLimit.scala | 20 +++++++++++---------
 5 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/ansible/roles/controller/tasks/deploy.yml b/ansible/roles/controller/tasks/deploy.yml
index e466d8b..636937c 100644
--- a/ansible/roles/controller/tasks/deploy.yml
+++ b/ansible/roles/controller/tasks/deploy.yml
@@ -140,6 +140,10 @@
       "CONFIG_whisk_memory_max": "{{ limit_action_memory_max | default() }}"
       "CONFIG_whisk_memory_std": "{{ limit_action_memory_std | default() }}"
 
+      "CONFIG_whisk_timeLimit_min": "{{ limit_action_time_min | default() }}"
+      "CONFIG_whisk_timeLimit_max": "{{ limit_action_time_max | default() }}"
+      "CONFIG_whisk_timeLimit_std": "{{ limit_action_time_std | default() }}"
+
       "CONFIG_whisk_activation_payload_max": "{{ limit_activation_payload | default() }}"
 
       "RUNTIMES_MANIFEST": "{{ runtimesManifest | to_json }}"
diff --git a/ansible/roles/invoker/tasks/deploy.yml b/ansible/roles/invoker/tasks/deploy.yml
index 8fc7a84..bf91a50 100644
--- a/ansible/roles/invoker/tasks/deploy.yml
+++ b/ansible/roles/invoker/tasks/deploy.yml
@@ -203,6 +203,9 @@
         -e CONFIG_whisk_memory_min='{{ limit_action_memory_min | default() }}'
         -e CONFIG_whisk_memory_max='{{ limit_action_memory_max | default() }}'
         -e CONFIG_whisk_memory_std='{{ limit_action_memory_std | default() }}'
+        -e CONFIG_whisk_timeLimit_min='{{ limit_action_time_min | default() }}'
+        -e CONFIG_whisk_timeLimit_max='{{ limit_action_time_max | default() }}'
+        -e CONFIG_whisk_timeLimit_std='{{ limit_action_time_std | default() }}'
         -e CONFIG_whisk_activation_payload_max='{{ limit_activation_payload | default() }}'
         -v /sys/fs/cgroup:/sys/fs/cgroup
         -v /run/runc:/run/runc
diff --git a/common/scala/src/main/resources/application.conf b/common/scala/src/main/resources/application.conf
index 1b9b739..0c4f91a 100644
--- a/common/scala/src/main/resources/application.conf
+++ b/common/scala/src/main/resources/application.conf
@@ -125,6 +125,13 @@ whisk {
         }
     }
 
+    # action timelimit configuration
+    time-limit {
+        min = 100 ms
+        max = 5 m
+        std = 1 m
+    }
+
     # action memory configuration
     memory {
         min = 128 m
diff --git a/common/scala/src/main/scala/whisk/core/WhiskConfig.scala b/common/scala/src/main/scala/whisk/core/WhiskConfig.scala
index aaa6a89..b3e6826 100644
--- a/common/scala/src/main/scala/whisk/core/WhiskConfig.scala
+++ b/common/scala/src/main/scala/whisk/core/WhiskConfig.scala
@@ -242,6 +242,7 @@ object ConfigKeys {
   val kafkaTopics = s"$kafka.topics"
 
   val memory = "whisk.memory"
+  val timeLimit = "whisk.time-limit"
   val activation = "whisk.activation"
   val activationPayload = s"$activation.payload"
 
diff --git a/common/scala/src/main/scala/whisk/core/entity/TimeLimit.scala b/common/scala/src/main/scala/whisk/core/entity/TimeLimit.scala
index 3122e2e..4819404 100644
--- a/common/scala/src/main/scala/whisk/core/entity/TimeLimit.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/TimeLimit.scala
@@ -17,19 +17,17 @@
 
 package whisk.core.entity
 
-import scala.concurrent.duration.Duration
-import scala.concurrent.duration.DurationInt
-import scala.concurrent.duration.FiniteDuration
-import scala.concurrent.duration.MILLISECONDS
-import scala.language.postfixOps
+import pureconfig._
+
+import scala.concurrent.duration._
 import scala.util.Failure
 import scala.util.Success
 import scala.util.Try
-
 import spray.json.JsNumber
 import spray.json.JsValue
 import spray.json.RootJsonFormat
 import spray.json.deserializationError
+import whisk.core.ConfigKeys
 
 /**
  * TimeLimit encapsulates a duration for an action. The duration must be within a
@@ -46,10 +44,14 @@ protected[entity] class TimeLimit private (val duration: FiniteDuration) extends
   override def toString = duration.toString
 }
 
+case class TimeLimitConfig(max: FiniteDuration, min: FiniteDuration, std: FiniteDuration)
+
 protected[core] object TimeLimit extends ArgNormalizer[TimeLimit] {
-  protected[core] val MIN_DURATION = 100 milliseconds
-  protected[core] val MAX_DURATION = 5 minutes
-  protected[core] val STD_DURATION = 1 minute
+  private val config = loadConfigOrThrow[TimeLimitConfig](ConfigKeys.timeLimit)
+
+  protected[core] val MIN_DURATION: FiniteDuration = config.min
+  protected[core] val MAX_DURATION: FiniteDuration = config.max
+  protected[core] val STD_DURATION: FiniteDuration = config.std
 
   /** Gets TimeLimit with default duration */
   protected[core] def apply(): TimeLimit = TimeLimit(STD_DURATION)

-- 
To stop receiving notification emails like this one, please contact
cbickel@apache.org.