From 2f0bf70826cfde49e980d362179717314290b6f1 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Sun, 18 May 2014 22:15:27 -0300 Subject: + core: allow dispatcher configuration to core components --- kamon-core/src/main/resources/reference.conf | 18 +++++++++------- .../scala/kamon/metrics/MetricsExtension.scala | 4 +--- .../src/main/scala/kamon/util/Contexts.scala | 24 ---------------------- .../scala/kamon/datadog/DatadogMetricsSender.scala | 3 ++- kamon-play/src/main/resources/reference.conf | 2 ++ kamon-play/src/main/scala/kamon/play/Play.scala | 3 +-- .../instrumentation/RequestInstrumentation.scala | 1 - 7 files changed, 17 insertions(+), 38 deletions(-) delete mode 100644 kamon-core/src/main/scala/kamon/util/Contexts.scala diff --git a/kamon-core/src/main/resources/reference.conf b/kamon-core/src/main/resources/reference.conf index b1e5309d..9abfd26a 100644 --- a/kamon-core/src/main/resources/reference.conf +++ b/kamon-core/src/main/resources/reference.conf @@ -3,22 +3,26 @@ # ================================== # kamon { + + # Default dispatcher for all Kamon components, unless a more specific one is configured. + default-dispatcher = "akka.actor.default-dispatcher" + metrics { - # Time interval at which Kamon will collect all metrics and send them to all subscribed actors. + # Time interval for collecting all metrics and send the snapshots to all subscribed actors. tick-interval = 1 second - # Time interval at which Kamon will record values for all registered gauges. + # Time interval for recording values on all registered gauges. gauge-recording-interval = 100 milliseconds + dispatchers { - # All Gauges record values periodically according to the `kamon.metrics.gauge-recording-interval` setting. - # This dispatcher is the one to be used to execute the recording code. - gauge-recordings = "akka.actor.default-dispatcher" + # Dispatcher for periodical gauge value recordings. + gauge-recordings = ${kamon.default-dispatcher} - # Dispatcher for the actor managing all subscriptions and metrics collection. - metric-subscriptions = "akka.actor.default-dispatcher" + # Dispatcher for subscriptions and metrics collection actors. + metric-subscriptions = ${kamon.default-dispatcher} } diff --git a/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala b/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala index 78a82d96..c60babb2 100644 --- a/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala +++ b/kamon-core/src/main/scala/kamon/metrics/MetricsExtension.scala @@ -19,7 +19,7 @@ package kamon.metrics import scala.collection.concurrent.TrieMap import akka.actor._ import com.typesafe.config.Config -import kamon.util.{ Contexts, GlobPathFilter } +import kamon.util.GlobPathFilter import kamon.Kamon import akka.actor import kamon.metrics.Metrics.MetricGroupFilter @@ -92,8 +92,6 @@ class MetricsExtension(system: ExtendedActorSystem) extends Kamon.Extension { allFilters.toMap } - - val defaultDispatcher = Contexts.lookupExecutionContext(Contexts.kamonDefaultDispatcher)(system) } object Metrics extends ExtensionId[MetricsExtension] with ExtensionIdProvider { diff --git a/kamon-core/src/main/scala/kamon/util/Contexts.scala b/kamon-core/src/main/scala/kamon/util/Contexts.scala deleted file mode 100644 index be0d367e..00000000 --- a/kamon-core/src/main/scala/kamon/util/Contexts.scala +++ /dev/null @@ -1,24 +0,0 @@ -package kamon.util - -import akka.actor.ActorSystem - -/* - * ========================================================================================= - * Copyright © 2013-2014 the kamon project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - * ========================================================================================= - */ -object Contexts { - val kamonDefaultDispatcher = "kamon.default-dispatcher" - - def lookupExecutionContext(id: String)(implicit system: ActorSystem) = system.dispatchers.lookup(id) -} diff --git a/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala b/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala index 654ab978..df072552 100644 --- a/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala +++ b/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala @@ -67,7 +67,8 @@ class DatadogMetricsSender(remote: InetSocketAddress, maxPacketSizeInBytes: Long def processTags(tags: Seq[String]): String = { if (tags.isEmpty) "" else { tags.foldLeft(new StringBuilder("|#")) { - (sb, s) ⇒ if (sb.length > 2) sb ++= "," + (sb, s) ⇒ + if (sb.length > 2) sb ++= "," sb ++= s }.toString() } diff --git a/kamon-play/src/main/resources/reference.conf b/kamon-play/src/main/resources/reference.conf index 34e0f793..47a31ef4 100644 --- a/kamon-play/src/main/resources/reference.conf +++ b/kamon-play/src/main/resources/reference.conf @@ -6,5 +6,7 @@ kamon { play { include-trace-token-header = true trace-token-header-name = "X-Trace-Token" + + dispatcher = ${kamon.default-dispatcher} } } \ No newline at end of file diff --git a/kamon-play/src/main/scala/kamon/play/Play.scala b/kamon-play/src/main/scala/kamon/play/Play.scala index d29c5666..ca9c10e5 100644 --- a/kamon-play/src/main/scala/kamon/play/Play.scala +++ b/kamon-play/src/main/scala/kamon/play/Play.scala @@ -18,7 +18,6 @@ package kamon.play import akka.actor.{ ExtendedActorSystem, Extension, ExtensionIdProvider, ExtensionId } import kamon.Kamon -import kamon.util.Contexts object Play extends ExtensionId[PlayExtension] with ExtensionIdProvider { override def lookup(): ExtensionId[_ <: Extension] = Play @@ -30,7 +29,7 @@ class PlayExtension(private val system: ExtendedActorSystem) extends Kamon.Exten private val config = system.settings.config.getConfig("kamon.play") - val defaultDispatcher = Contexts.lookupExecutionContext(Contexts.kamonDefaultDispatcher)(system) + val defaultDispatcher = system.dispatchers.lookup(config.getString("dispatcher")) val includeTraceToken: Boolean = config.getBoolean("include-trace-token-header") val traceTokenHeaderName: String = config.getString("trace-token-header-name") } diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala index 3a84f741..af11a07a 100644 --- a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala +++ b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala @@ -25,7 +25,6 @@ import akka.actor.ActorSystem import org.aspectj.lang.ProceedingJoinPoint import org.aspectj.lang.annotation._ import scala.Some -import kamon.util.Contexts @Aspect class RequestInstrumentation { -- cgit v1.2.3