diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
commit | 2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 (patch) | |
tree | 56c4ad1f025c9144376cd4463ad4d4a23e37b571 /kamon-core/src/main/scala/kamon/instrumentation | |
parent | 5127c3bb83cd6fe90e071720d995cfb53d913e6a (diff) | |
download | Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.gz Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.bz2 Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.zip |
basic separation of concerns between sub-projects
Diffstat (limited to 'kamon-core/src/main/scala/kamon/instrumentation')
4 files changed, 3 insertions, 127 deletions
diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ActorInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/ActorInstrumentation.scala deleted file mode 100644 index 4e078201..00000000 --- a/kamon-core/src/main/scala/kamon/instrumentation/ActorInstrumentation.scala +++ /dev/null @@ -1,42 +0,0 @@ -package kamon.instrumentation - -import akka.actor.{Props, ActorSystem, ActorRef} -import akka.dispatch.{MessageDispatcher, Envelope} -import kamon.{Tracer} -import kamon.instrumentation.SimpleContextPassingInstrumentation.SimpleTraceMessage -import kamon.trace.TraceContext - -trait ActorInstrumentationConfiguration { - def sendMessageTransformation(from: ActorRef, to: ActorRef, message: Any): Any - def receiveInvokeInstrumentation(system: ActorSystem, self: ActorRef, props: Props, dispatcher: MessageDispatcher, parent: ActorRef): ActorReceiveInvokeInstrumentation -} - - -trait ActorReceiveInvokeInstrumentation { - def preReceive(envelope: Envelope): (Envelope, Option[TraceContext]) -} - -object ActorReceiveInvokeInstrumentation { - val noopPreReceive = new ActorReceiveInvokeInstrumentation{ - def preReceive(envelope: Envelope): (Envelope, Option[TraceContext]) = (envelope, None) - } -} - -class SimpleContextPassingInstrumentation extends ActorInstrumentationConfiguration { - def sendMessageTransformation(from: ActorRef, to: ActorRef, message: Any): Any = SimpleTraceMessage(message, Tracer.context) - - def receiveInvokeInstrumentation(system: ActorSystem, self: ActorRef, props: Props, dispatcher: MessageDispatcher, parent: ActorRef): ActorReceiveInvokeInstrumentation = { - new ActorReceiveInvokeInstrumentation { - def preReceive(envelope: Envelope): (Envelope, Option[TraceContext]) = envelope match { - case env @ Envelope(SimpleTraceMessage(msg, ctx), _) => (env.copy(message = msg), ctx) - case anyOther => (anyOther, None) - } - } - } -} - -object SimpleContextPassingInstrumentation { - case class SimpleTraceMessage(message: Any, context: Option[TraceContext]) -} - - diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala deleted file mode 100644 index 9b53bd5d..00000000 --- a/kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala +++ /dev/null @@ -1,32 +0,0 @@ -package kamon.instrumentation - -import org.aspectj.lang.annotation.{Around, Pointcut, DeclareMixin, Aspect} -import kamon.{Tracer} -import org.aspectj.lang.ProceedingJoinPoint -import org.slf4j.MDC -import kamon.trace.TraceContext - -@Aspect -class ActorLoggingInstrumentation { - - - @DeclareMixin("akka.event.Logging.LogEvent+") - def traceContextMixin: ContextAware = new ContextAware { - def traceContext: Option[TraceContext] = Tracer.context() - } - - @Pointcut("execution(* akka.event.slf4j.Slf4jLogger.withMdc(..)) && args(logSource, logEvent, logStatement)") - def withMdcInvocation(logSource: String, logEvent: ContextAware, logStatement: () => _): Unit = {} - - @Around("withMdcInvocation(logSource, logEvent, logStatement)") - def putTraceContextInMDC(pjp: ProceedingJoinPoint, logSource: String, logEvent: ContextAware, logStatement: () => _): Unit = { - logEvent.traceContext match { - case Some(ctx) => - MDC.put("uow", ctx.uow) - pjp.proceed() - MDC.remove("uow") - - case None => pjp.proceed() - } - } -} diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala deleted file mode 100644 index 9b5ce0a4..00000000 --- a/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala +++ /dev/null @@ -1,50 +0,0 @@ -package kamon.instrumentation - -import org.aspectj.lang.annotation._ -import org.aspectj.lang.ProceedingJoinPoint -import akka.actor.{Props, ActorSystem, ActorRef} -import kamon.{Tracer} -import akka.dispatch.{Envelope, MessageDispatcher} -import com.codahale.metrics.Timer -import scala.Some -import kamon.trace.context.TracingAwareContext -import kamon.trace.TraceContext - -case class TraceableMessage(traceContext: Option[TraceContext], message: Any, timer: Timer.Context) -case class DefaultTracingAwareEnvelopeContext(traceContext: Option[TraceContext] = Tracer.traceContext.value, timestamp: Long = System.nanoTime) extends TracingAwareContext - -@Aspect -class ActorCellInvokeInstrumentation { - - @Pointcut("execution(akka.actor.ActorCell.new(..)) && args(system, ref, props, dispatcher, parent)") - def actorCellCreation(system: ActorSystem, ref: ActorRef, props: Props, dispatcher: MessageDispatcher, parent: ActorRef): Unit = {} - - @Pointcut("(execution(* akka.actor.ActorCell.invoke(*)) || execution(* akka.routing.RoutedActorCell.sendMessage(*))) && args(envelope)") - def invokingActorBehaviourAtActorCell(envelope: Envelope) = {} - - @Around("invokingActorBehaviourAtActorCell(envelope)") - def around(pjp: ProceedingJoinPoint, envelope: Envelope): Unit = { - //safe cast - val msgContext = envelope.asInstanceOf[TracingAwareContext].traceContext - - Tracer.traceContext.withValue(msgContext) { - pjp.proceed() - } - } -} - -@Aspect -class EnvelopeTracingContext { - - @DeclareMixin("akka.dispatch.Envelope") - def mixin: TracingAwareContext = DefaultTracingAwareEnvelopeContext() - - @Pointcut("execution(akka.dispatch.Envelope.new(..)) && this(ctx)") - def requestRecordInit(ctx: TracingAwareContext): Unit = {} - - @After("requestRecordInit(ctx)") - def whenCreatedRequestRecord(ctx: TracingAwareContext): Unit = { - // Necessary to force the initialization of TracingAwareRequestContext at the moment of creation. - ctx.traceContext - } -} diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ExecutorServiceMetrics.scala b/kamon-core/src/main/scala/kamon/instrumentation/ExecutorServiceMetrics.scala index b4f8a475..3a091775 100644 --- a/kamon-core/src/main/scala/kamon/instrumentation/ExecutorServiceMetrics.scala +++ b/kamon-core/src/main/scala/kamon/instrumentation/ExecutorServiceMetrics.scala @@ -21,7 +21,7 @@ class ActorSystemInstrumentation { @After("actorSystemInstantiation(name, applicationConfig, classLoader)") def registerActorSystem(name: String, applicationConfig: Config, classLoader: ClassLoader): Unit = { - Kamon.Metric.registerActorSystem(name) + //Kamon.Metric.registerActorSystem(name) } } @@ -35,7 +35,7 @@ class ForkJoinPoolInstrumentation { @After("forkJoinPoolInstantiation(parallelism, threadFactory, exceptionHandler)") def initializeMetrics(parallelism: Int, threadFactory: ForkJoinPool.ForkJoinWorkerThreadFactory, exceptionHandler: Thread.UncaughtExceptionHandler): Unit = { - val (actorSystemName, dispatcherName) = threadFactory match { + /*val (actorSystemName, dispatcherName) = threadFactory match { case mtf: MonitorableThreadFactory => splitName(mtf.name, Kamon.Metric.actorSystemNames) case _ => ("Unknown", "Unknown") } @@ -45,7 +45,7 @@ class ForkJoinPoolInstrumentation { activeThreadsHistogram = m.activeThreadCount poolSizeHistogram = m.poolSize println(s"Registered $dispatcherName for actor system $actorSystemName") - } + }*/ } def splitName(threadFactoryName: String, knownActorSystems: List[String]): (String, String) = { |