You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2018/01/12 14:16:11 UTC
[incubator-openwhisk] branch master updated: Add TID stride
configuration (#3104)
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 d2a40ce Add TID stride configuration (#3104)
d2a40ce is described below
commit d2a40ce59034247431dc743d5dd39d97905792ca
Author: James Dubee <jw...@us.ibm.com>
AuthorDate: Fri Jan 12 09:16:08 2018 -0500
Add TID stride configuration (#3104)
Decouple the stride used to count transaction from container instance. The counter generates a sequence: instance-ordinal + n * stride.
---
ansible/group_vars/all | 3 +++
ansible/roles/controller/tasks/deploy.yml | 2 ++
common/scala/src/main/resources/application.conf | 5 +++++
.../scala/src/main/scala/whisk/common/TransactionId.scala | 14 +++++++++++---
common/scala/src/main/scala/whisk/core/WhiskConfig.scala | 3 +++
.../src/main/scala/whisk/core/controller/Controller.scala | 1 -
.../src/main/scala/whisk/core/invoker/InvokerServer.scala | 2 --
.../whisk/core/controller/test/ControllerTestCommon.scala | 1 -
.../src/test/scala/whisk/core/database/test/DbUtils.scala | 1 -
9 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/ansible/group_vars/all b/ansible/group_vars/all
index 2ffa75e..c6957fc 100644
--- a/ansible/group_vars/all
+++ b/ansible/group_vars/all
@@ -63,6 +63,9 @@ controller:
ha: "{{ controller_enable_ha | default(True) and groups['controllers'] | length > 1 }}"
loglevel: "{{ controller_loglevel | default(whisk_loglevel) | default('INFO') }}"
+transactions:
+ stride: "{{ groups['controllers'] | length }}"
+
registry:
confdir: "{{ config_root_dir }}/registry"
diff --git a/ansible/roles/controller/tasks/deploy.yml b/ansible/roles/controller/tasks/deploy.yml
index ca1aa2a..5f9687e 100644
--- a/ansible/roles/controller/tasks/deploy.yml
+++ b/ansible/roles/controller/tasks/deploy.yml
@@ -104,6 +104,8 @@
"CONFIG_whisk_spi_LogStoreProvider": "{{ userLogs.spi }}"
"CONFIG_logback_log_level": "{{ controller.loglevel }}"
+
+ "CONFIG_whisk_transactions_stride": "{{ transactions.stride | default() }}"
volumes:
- "{{ whisk_logs_dir }}/controller{{ groups['controllers'].index(inventory_hostname) }}:/logs"
ports:
diff --git a/common/scala/src/main/resources/application.conf b/common/scala/src/main/resources/application.conf
index 8af1d3d..3ba04c8 100644
--- a/common/scala/src/main/resources/application.conf
+++ b/common/scala/src/main/resources/application.conf
@@ -82,4 +82,9 @@ whisk {
activations-ddoc = "whisks.v2"
activations-filter-ddoc = "whisks-filters.v2"
}
+ # transaction ID related configuration
+ transactions {
+ stride = 1
+ stride = ${?CONTROLLER_INSTANCES}
+ }
}
diff --git a/common/scala/src/main/scala/whisk/common/TransactionId.scala b/common/scala/src/main/scala/whisk/common/TransactionId.scala
index 95e6eef..7f422ac 100644
--- a/common/scala/src/main/scala/whisk/common/TransactionId.scala
+++ b/common/scala/src/main/scala/whisk/common/TransactionId.scala
@@ -32,6 +32,10 @@ import spray.json.JsNumber
import spray.json.JsValue
import spray.json.RootJsonFormat
+import whisk.core.ConfigKeys
+
+import pureconfig._
+
/**
* A transaction id for tracking operations in the system that are specific to a request.
* An instance of TransactionId is implicitly received by all logging methods. The actual
@@ -241,12 +245,16 @@ object TransactionId {
* A thread-safe transaction counter.
*/
trait TransactionCounter {
- val numberOfInstances: Int
+ case class TransactionCounterConfig(stride: Int)
+
+ val transCounterConfig = loadConfigOrThrow[TransactionCounterConfig](ConfigKeys.transactions)
+ val stride = transCounterConfig.stride
val instanceOrdinal: Int
- private lazy val cnt = new AtomicInteger(numberOfInstances + instanceOrdinal)
+ // seed the counter so transids do not overlap: instanceOrdinal + n * stride, start at n = 1
+ private lazy val cnt = new AtomicInteger(instanceOrdinal + stride)
def transid(): TransactionId = {
- TransactionId(cnt.addAndGet(numberOfInstances))
+ TransactionId(cnt.addAndGet(stride))
}
}
diff --git a/common/scala/src/main/scala/whisk/core/WhiskConfig.scala b/common/scala/src/main/scala/whisk/core/WhiskConfig.scala
index f0db605..c9fc503 100644
--- a/common/scala/src/main/scala/whisk/core/WhiskConfig.scala
+++ b/common/scala/src/main/scala/whisk/core/WhiskConfig.scala
@@ -249,4 +249,7 @@ object ConfigKeys {
val dockerTimeouts = s"$docker.timeouts"
val runc = "whisk.runc"
val runcTimeouts = s"$runc.timeouts"
+
+ val transactions = "whisk.transactions"
+ val stride = s"$transactions.stride"
}
diff --git a/core/controller/src/main/scala/whisk/core/controller/Controller.scala b/core/controller/src/main/scala/whisk/core/controller/Controller.scala
index 08b8f1d..ba58452 100644
--- a/core/controller/src/main/scala/whisk/core/controller/Controller.scala
+++ b/core/controller/src/main/scala/whisk/core/controller/Controller.scala
@@ -83,7 +83,6 @@ class Controller(val instance: InstanceId,
implicit val logging: Logging)
extends BasicRasService {
- override val numberOfInstances = whiskConfig.controllerInstances.toInt
override val instanceOrdinal = instance.toInt
TransactionId.controller.mark(
diff --git a/core/invoker/src/main/scala/whisk/core/invoker/InvokerServer.scala b/core/invoker/src/main/scala/whisk/core/invoker/InvokerServer.scala
index f8cb163..2b45fca 100644
--- a/core/invoker/src/main/scala/whisk/core/invoker/InvokerServer.scala
+++ b/core/invoker/src/main/scala/whisk/core/invoker/InvokerServer.scala
@@ -24,7 +24,5 @@ import whisk.http.BasicRasService
* Currently provides a health ping route, only.
*/
class InvokerServer() extends BasicRasService {
-
- override val numberOfInstances = 1
override val instanceOrdinal = 1
}
diff --git a/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala b/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala
index 28f4bb9..f0c9fe5 100644
--- a/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala
+++ b/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala
@@ -60,7 +60,6 @@ protected trait ControllerTestCommon
override val instanceOrdinal = 0
override val instance = InstanceId(instanceOrdinal)
- override val numberOfInstances = 1
val activeAckTopicIndex = InstanceId(instanceOrdinal)
implicit val routeTestTimeout = RouteTestTimeout(90 seconds)
diff --git a/tests/src/test/scala/whisk/core/database/test/DbUtils.scala b/tests/src/test/scala/whisk/core/database/test/DbUtils.scala
index 62c705b..85b69fb 100644
--- a/tests/src/test/scala/whisk/core/database/test/DbUtils.scala
+++ b/tests/src/test/scala/whisk/core/database/test/DbUtils.scala
@@ -46,7 +46,6 @@ import whisk.core.entity.types.EntityStore
*/
trait DbUtils extends TransactionCounter {
implicit val dbOpTimeout = 15 seconds
- override val numberOfInstances = 1
override val instanceOrdinal = 0
val instance = InstanceId(instanceOrdinal)
val docsToDelete = ListBuffer[(ArtifactStore[_], DocInfo)]()
--
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].