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.