kamon-io / kamon-akka

Kamon Instrumentation for Akka
https://kamon.io/docs/latest/instrumentation/akka/
Other
44 stars 20 forks source link

Unexpected behavior with Kamon.IO and Akka Cluster Aware Routers #17

Closed lashchenko closed 7 years ago

lashchenko commented 7 years ago

Akka messages can be successfully sent (and delivered) to router that configured as allow-local-routees = off when kamon used in project. Messages that are sent to router with configuration allow-local-routees = on just disappear. I prepared a small example that makes it easy to reproduce the problem.

ganaakruti commented 7 years ago

@lashchenko - I had a similar issue, but my approach was at including or excluding the libraries. Dependencies in my build.sbt include:

"io.kamon" % "sigar-loader" % "1.6.6", "io.kamon" % "kamon-autoweave_2.11" % "0.6.0", "io.kamon" % "kamon-core_2.11" % "0.6.7", "io.kamon" %% "kamon-riemann" % "0.6.7", "io.kamon" % "kamon-akka_2.11" % "0.6.3", "io.kamon" % "kamon-akka-remote_2.11" % "0.6.3", "io.kamon" % "kamon-system-metrics_2.11" % "0.6.7", "io.kamon" % "kamon-log-reporter_2.11" % "0.6.8", "org.aspectj" % "aspectjweaver" % "1.8.10", "org.aspectj" % "aspectjrt" % "1.8.10", "org.aspectj" % "aspectjtools" % "1.8.10"

When I disable or remove akka-remote above, I can see that messages upstream is trying to send to routees via router (Round-Robin Pool) get through and was able to receive an ack back to the sender from each of those routees. This ack is essential for me and this is broken when akka-remote package is included. I have played with fork in sbt set to false, and passing in javaagent (for aspectj) as a javaOptions setting, it would throw aspectj missing error.

Wanted to share my experience and see if you've got further updates on your attempts to solve this!

By the way, I have tried with local routees setting you have mentioned. It didn't matter whether the setting was on or off.

Best, Kalyan

lashchenko commented 7 years ago

@ganaakruti thank you for information.

I see that this issue was fixed in the PR https://github.com/kamon-io/kamon-akka/pull/19#issuecomment-317011007 This fix was included to kamon-akka 0.6.8 version.

@ivantopo I updated my example to the latest version (0.6.8) and I don't see this issue more. Should we close this ticket now?

ganaakruti commented 7 years ago

@lashchenko - thanks for providing the feedback. I have re-introduced kamon with version indicated above. Initial tests seem to be running satisfactory, grabbing and pushing metrics to Riemann. Yes this ticket can be closed from my end.

Here's the relevant snipped from my build.sbt:

imports: import com.typesafe.sbt.SbtAspectj._

resolvers portion includes: "Kamon Repository Snapshots" at "http://snapshots.kamon.io", "clojars" at "https://clojars.org/repo"

libraryDependencies ++ = Seq(..., "io.kamon" % "kamon-akka-2.4_2.11" % "0.6.8", "io.kamon" % "kamon-akka-http_2.11" % "0.6.8", "org.aspectj" % "aspectjweaver" % "1.8.10", "io.kamon" % "kamon-riemann_2.11" % "0.6.7", "com.aphyr" % "riemann-java-client" % "0.4.1" ...)

javaOptions in Test ++ = Seq(..., s"-javaagent:${baseDirectory.value}/custom_lib/aspectjweaver-1.8.10.jar")

Finally, lazy val root...

lazy val root = (project in file(".")) .settings(commonSettings:*) .settings(aspectjSettings: *)

test application.conf modules section for kamon includes following:

modules { kamon-log-reporter.auto-start = no kamon-log-reporter.requires-aspectj = no kamon-system-metrics.auto-start = no kamon-system-metrics.requires-aspectj = no kamon-akka.auto-start = yes kamon-akka.requires-aspectj = no }

dpsoft commented 7 years ago

@lashchenko @ganaakruti thanks for your feedback!!