From 003af1dd8ef1e3b4a8f1a9eff56a3c15c01cb2a9 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Mon, 27 Jan 2014 09:11:32 -0300 Subject: rename UOW to TraceToken and generate it by default when a Trace starts --- kamon-core/src/main/scala/kamon/trace/Trace.scala | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'kamon-core/src/main/scala/kamon/trace/Trace.scala') 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") } -- cgit v1.2.3