aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/Trace.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-01-27 09:11:32 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-01-27 09:11:32 -0300
commit003af1dd8ef1e3b4a8f1a9eff56a3c15c01cb2a9 (patch)
treee0afcb7d2358787f16c5b19e8caceaab5d6ea1ca /kamon-core/src/main/scala/kamon/trace/Trace.scala
parentfc13a7e4abf87c92d63cb7b13561119b6414651e (diff)
downloadKamon-003af1dd8ef1e3b4a8f1a9eff56a3c15c01cb2a9.tar.gz
Kamon-003af1dd8ef1e3b4a8f1a9eff56a3c15c01cb2a9.tar.bz2
Kamon-003af1dd8ef1e3b4a8f1a9eff56a3c15c01cb2a9.zip
rename UOW to TraceToken and generate it by default when a Trace starts
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/Trace.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Trace.scala19
1 files changed, 14 insertions, 5 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Trace.scala b/kamon-core/src/main/scala/kamon/trace/Trace.scala
index 31e8185a..7dd3a6f8 100644
--- a/kamon-core/src/main/scala/kamon/trace/Trace.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Trace.scala
@@ -21,6 +21,8 @@ import scala.Some
import kamon.trace.Trace.Register
import scala.concurrent.duration._
import java.util.concurrent.atomic.AtomicLong
+import scala.util.Try
+import java.net.InetAddress
object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
def lookup(): ExtensionId[_ <: Extension] = Trace
@@ -40,8 +42,8 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
private def set(ctx: Option[TraceContext]) = traceContext.set(ctx)
def clear: Unit = traceContext.remove()
- def start(name: String)(implicit system: ActorSystem): TraceContext = {
- val ctx = newTraceContext(name)
+ def start(name: String, token: Option[String])(implicit system: ActorSystem): TraceContext = {
+ val ctx = newTraceContext(name, token.getOrElse(TraceToken.generate()))
ctx.start(name)
set(Some(ctx))
@@ -68,7 +70,7 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
}
// TODO: FIX
- def newTraceContext(name: String)(implicit system: ActorSystem): TraceContext = TraceContext(Kamon(Trace).api, tranid.getAndIncrement, name)
+ def newTraceContext(name: String, token: String)(implicit system: ActorSystem): TraceContext = TraceContext(Kamon(Trace).api, tranid.getAndIncrement, name, token)
def startSegment(category: Segments.Category, description: String = "", attributes: Map[String, String] = Map()): SegmentCompletionHandle = {
val start = Segments.Start(category, description, attributes)
@@ -80,14 +82,21 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
case class SegmentCompletionHandle(start: Segments.Start) {
def complete(): Unit = {
val end = Segments.End()
- println(s"Completing the Segment: $start - $end")
+ //println(s"Completing the Segment: $start - $end")
}
def complete(end: Segments.End): Unit = {
- println(s"Completing the Segment: $start - $end")
+ //println(s"Completing the Segment: $start - $end")
}
}
}
+object TraceToken {
+ val tokenCounter = new AtomicLong
+ val hostnamePrefix = Try(InetAddress.getLocalHost.getHostName).getOrElse("unknown-localhost")
+
+ def generate(): String = "%s-%s".format(hostnamePrefix, tokenCounter.incrementAndGet())
+}
+
class TraceExtension(system: ExtendedActorSystem) extends Kamon.Extension {
val api: ActorRef = system.actorOf(Props[TraceManager], "kamon-trace")
}