Skip to content

upgrade to Kanela 2.0.0-beta.1 #1387

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 29 additions & 58 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ lazy val `kamon-twitter-future` = (project in file("instrumentation/kamon-twitte
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"com.twitter" %% "util-core" % "20.3.0" % "provided",
Expand All @@ -210,7 +210,7 @@ lazy val `kamon-scalaz-future` = (project in file("instrumentation/kamon-scalaz-
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.scalaz" %% "scalaz-concurrent" % "7.2.28" % "provided",
Expand All @@ -236,7 +236,7 @@ lazy val `kamon-cats-io` = (project in file("instrumentation/kamon-cats-io"))
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided", {
if (scalaBinaryVersion.value == "2.11")
Expand All @@ -254,7 +254,7 @@ lazy val `kamon-cats-io-3` = (project in file("instrumentation/kamon-cats-io-3")
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.typelevel" %% "cats-effect" % "3.3.14" % "provided",
Expand All @@ -268,7 +268,7 @@ lazy val `kamon-zio-2` = (project in file("instrumentation/kamon-zio-2"))
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"dev.zio" %% "zio" % "2.0.21" % "provided",
Expand Down Expand Up @@ -333,7 +333,7 @@ lazy val `kamon-mongo-legacy` = (project in file("instrumentation/kamon-mongo-le
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.mongodb" % "mongodb-driver-sync" % "3.11.0" % "provided",
Expand All @@ -350,7 +350,7 @@ lazy val `kamon-mongo` = (project in file("instrumentation/kamon-mongo"))
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.mongodb" % "mongodb-driver-sync" % "4.2.3" % "provided",
Expand All @@ -366,7 +366,7 @@ lazy val `kamon-cassandra` = (project in file("instrumentation/kamon-cassandra")
.disablePlugins(AssemblyPlugin)
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`))
.settings(crossScalaVersions := Seq(`scala_2.13_version`))
.dependsOn(`kamon-core`, `kamon-instrumentation-common`, `kamon-testkit` % "test", `kamon-executors`)

lazy val `kamon-elasticsearch` = (project in file("instrumentation/kamon-elasticsearch"))
Expand Down Expand Up @@ -412,6 +412,7 @@ lazy val `kamon-spring` = (project in file("instrumentation/kamon-spring"))
kanelaAgent % "provided",
"org.springframework.boot" % "spring-boot-starter-web" % "2.4.2" % "provided",
"org.springframework.boot" % "spring-boot-starter-webflux" % "2.4.2" % "provided",
"javax.servlet" % "javax.servlet-api" % "4.0.1" % "provided",
okHttp % "test",
"com.h2database" % "h2" % "1.4.200" % "test",
"javax.xml.bind" % "jaxb-api" % "2.3.1" % "test",
Expand Down Expand Up @@ -466,14 +467,13 @@ lazy val `kamon-akka` = (project in file("instrumentation/kamon-akka"))
.disablePlugins(AssemblyPlugin)
.settings(instrumentationSettings: _*)
.dependsOn(
`kamon-scala-future` % "compile,common,akka-2.5,akka-2.6",
`kamon-testkit` % "test,test-common,test-akka-2.5,test-akka-2.6"
`kamon-scala-future` % "compile,common,akka-2.6",
`kamon-testkit` % "test,test-common,test-akka-2.6"
)

def akkaHttpVersion(scalaVersion: String) = scalaVersion match {
case "2.11" => "10.1.12"
case "3" => "10.5.0"
case _ => "10.2.8"
case "3" => "10.5.0"
case _ => "10.2.8"
}
def akkaStreamVersion(scalaVersion: String) = scalaVersion match {
case "3" => "2.7.0"
Expand All @@ -484,22 +484,11 @@ def akkaGrpcRuntimeVersion(scalaVersion: String) = scalaVersion match {
case _ => "2.1.3"
}

def versionedScalaSourceDirectories(sourceDir: File, scalaVersion: String): List[File] =
scalaVersion match {
case "3" => List(sourceDir / "scala-2.13+")
case "2.13" => List(sourceDir / "scala-2.13+")
case _ => Nil
}

lazy val `kamon-akka-http` = (project in file("instrumentation/kamon-akka-http"))
.enablePlugins(JavaAgent)
.disablePlugins(AssemblyPlugin)
.settings(instrumentationSettings)
.settings(Seq(
Compile / unmanagedSourceDirectories ++= versionedScalaSourceDirectories(
(Compile / sourceDirectory).value,
scalaBinaryVersion.value
),
resolvers += Resolver.bintrayRepo("hseeberger", "maven"),
javaAgents += "org.mortbay.jetty.alpn" % "jetty-alpn-agent" % "2.0.10" % "test",
libraryDependencies ++= Seq(
Expand All @@ -523,7 +512,7 @@ lazy val `kamon-pekko` = (project in file("instrumentation/kamon-pekko"))
.disablePlugins(AssemblyPlugin)
.settings(instrumentationSettings: _*)
.settings(Seq(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
"org.apache.pekko" %% "pekko-actor" % "1.0.1" % "provided"
)
Expand All @@ -540,7 +529,7 @@ lazy val `kamon-pekko-http` = (project in file("instrumentation/kamon-pekko-http
.disablePlugins(AssemblyPlugin)
.settings(instrumentationSettings)
.settings(Seq(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.apache.pekko" %% "pekko-http" % pekkoHttpVersion % "provided",
Expand All @@ -561,7 +550,7 @@ lazy val `kamon-pekko-grpc` = (project in file("instrumentation/kamon-pekko-grpc
.settings(instrumentationSettings)
.settings(Seq(
PB.additionalDependencies := Seq.empty,
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.apache.pekko" %% "pekko-http" % pekkoHttpVersion % "provided",
Expand All @@ -581,7 +570,7 @@ lazy val `kamon-pekko-connectors-kafka` = (project in file("instrumentation/kamo
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"org.apache.pekko" %% "pekko-connectors-kafka" % "1.0.0" % "provided",
Expand All @@ -597,7 +586,7 @@ lazy val `kamon-akka-grpc` = (project in file("instrumentation/kamon-akka-grpc")
.settings(instrumentationSettings)
.settings(Seq(
PB.additionalDependencies := Seq.empty,
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, scala_3_version),
crossScalaVersions := Seq(`scala_2.13_version`, scala_3_version),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion(scalaBinaryVersion.value) % "provided",
Expand All @@ -620,12 +609,12 @@ lazy val `kamon-play` = (project in file("instrumentation/kamon-play"))
.disablePlugins(AssemblyPlugin)
.settings(
instrumentationSettings,
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`)
crossScalaVersions := Seq(`scala_2.13_version`)
)
.dependsOn(
`kamon-akka` % "compile,test-common,test-play-2.8,test-play-2.7,test-play-2.6",
`kamon-akka-http` % "compile,test-common,test-play-2.8,test-play-2.7,test-play-2.6",
`kamon-testkit` % "test-common,test-play-2.8,test-play-2.7,test-play-2.6"
`kamon-akka` % "compile,test-common,test-play-2.8,test-play-2.7",
`kamon-akka-http` % "compile,test-common,test-play-2.8,test-play-2.7",
`kamon-testkit` % "test-common,test-play-2.8,test-play-2.7"
)

lazy val `kamon-okhttp` = (project in file("instrumentation/kamon-okhttp"))
Expand All @@ -648,7 +637,7 @@ lazy val `kamon-tapir` = (project in file("instrumentation/kamon-tapir"))
.enablePlugins(JavaAgent)
.settings(
instrumentationSettings,
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided,legacy",

Expand Down Expand Up @@ -704,7 +693,7 @@ lazy val `kamon-caffeine` = (project in file("instrumentation/kamon-caffeine"))
lazy val `kamon-lagom` = (project in file("instrumentation/kamon-lagom"))
.disablePlugins(AssemblyPlugin)
.settings(
crossScalaVersions := Seq(`scala_2.11_version`, `scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, scalaMajor)) if scalaMajor == 11 =>
Expand All @@ -720,7 +709,7 @@ lazy val `kamon-finagle` = (project in file("instrumentation/kamon-finagle"))
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"com.twitter" %% "finagle-http" % "21.12.0" % "provided",
Expand Down Expand Up @@ -751,7 +740,7 @@ lazy val `kamon-alpakka-kafka` = (project in file("instrumentation/kamon-alpakka
.enablePlugins(JavaAgent)
.settings(instrumentationSettings)
.settings(
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`),
crossScalaVersions := Seq(`scala_2.13_version`),
libraryDependencies ++= Seq(
kanelaAgent % "provided",
"com.typesafe.akka" %% "akka-stream-kafka" % "2.1.1" % "provided",
Expand Down Expand Up @@ -790,7 +779,7 @@ lazy val `kamon-http4s-0_23` = (project in file("instrumentation/kamon-http4s-0.
.settings(
name := "kamon-http4s-0.23",
scalacOptions ++= { if (scalaBinaryVersion.value == "2.12") Seq("-Ypartial-unification") else Seq.empty },
crossScalaVersions := Seq(`scala_2.12_version`, `scala_2.13_version`, `scala_3_version`),
crossScalaVersions := Seq(`scala_2.13_version`, `scala_3_version`),
libraryDependencies ++= Seq(
"org.http4s" %% "http4s-client" % "0.23.19" % Provided,
"org.http4s" %% "http4s-server" % "0.23.19" % Provided,
Expand Down Expand Up @@ -1002,7 +991,6 @@ lazy val bundle = (project in file("bundle"))
.settings(crossScalaVersions := Nil)
.aggregate(
`kamon-bundle`,
`kamon-bundle_2_11`,
`kamon-bundle-3`,
`kamon-runtime-attacher`
)
Expand Down Expand Up @@ -1104,13 +1092,12 @@ lazy val `kamon-bundle-dependencies-all` = (project in file("bundle/kamon-bundle
* Add a reference here to all the project dependencies that can be built
* from 2.12. Currently only Scala 2.12 and 2.13.
*/
lazy val `kamon-bundle-dependencies-2-12-and-up` = (project in file("bundle/kamon-bundle-dependencies-2-12-and-up"))
lazy val `kamon-bundle-dependencies-2-13` = (project in file("bundle/kamon-bundle-dependencies-2-12-and-up"))
.disablePlugins(AssemblyPlugin)
.settings(noPublishing: _*)
.settings(ideSkipProject: _*)
.settings(
crossScalaVersions := Seq(
`scala_2.12_version`,
`scala_2.13_version`
)
)
Expand Down Expand Up @@ -1173,13 +1160,12 @@ lazy val `kamon-bundle` = (project in file("bundle/kamon-bundle"))
.settings(ideSkipProject: _*)
.settings(
crossScalaVersions := Seq(
`scala_2.12_version`,
`scala_2.13_version`
)
)
.dependsOn(
`kamon-core`,
`kamon-bundle-dependencies-2-12-and-up` % "shaded"
`kamon-bundle-dependencies-2-13` % "shaded"
)

lazy val `kamon-bundle-3` = (project in file("bundle/kamon-bundle-3"))
Expand All @@ -1195,21 +1181,6 @@ lazy val `kamon-bundle-3` = (project in file("bundle/kamon-bundle-3"))
`kamon-bundle-dependencies-3` % "shaded"
)

lazy val `kamon-bundle_2_11` = (project in file("bundle/kamon-bundle_2.11"))
.enablePlugins(AssemblyPlugin)
.settings(commonBundleSettings)
.settings(ideSkipProject: _*)
.settings(
scalaVersion := `scala_2.11_version`,
crossScalaVersions := Seq(
`scala_2.11_version`
)
)
.dependsOn(
`kamon-core`,
`kamon-bundle-dependencies-all` % "shaded"
)

lazy val `bill-of-materials` = (project in file("bill-of-materials"))
.enablePlugins(BillOfMaterialsPlugin)
.settings(ideSkipProject: _*)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ object Attacher {
def attach(): Unit = {
val springBootClassLoader = findSpringBootJarLauncherClassLoader()

if (isKanelaLoaded) {
if (isKanelaLoaded()) {

// If Kanela has already been loaded and we are running on a Spring Boot application, we might need to reload
// Kanela to ensure it will use the proper ClassLoader for loading the instrumentations.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package kamon
package status

import kamon.status.Status.Instrumentation.TypeError
import org.slf4j.LoggerFactory
import java.lang.{Boolean => JBoolean}
import java.util.{List => JavaList, Map => JavaMap}
Expand All @@ -35,7 +34,7 @@ object InstrumentationStatus {

private val _logger = LoggerFactory.getLogger("kamon.status.Status.Instrumentation")
private val _kanelaLoadedPropertyName = "kanela.loaded"
private val _registryClassName = "kanela.agent.api.instrumentation.listener.InstrumentationRegistryListener"
private val _registryClassName = "kanela.agent.bootstrap.StatusApi"

/**
* Tries to fetch the current instrumentation information from Kanela and assemble a status instance. Since the
Expand All @@ -53,39 +52,32 @@ object InstrumentationStatus {
val present = (registryClass != null) && kanelaLoaded

val kanelaVersion = Class.forName("kanela.agent.util.BuildInfo", false, ClassLoader.getSystemClassLoader)
.getMethod("version")
.invoke(null)
.getField("version")
.get(null)
.asInstanceOf[String]

val modules = registryClass.getMethod("shareModules")
val modules = registryClass.getMethod("shareModulesInfo")
.invoke(null)
.asInstanceOf[JavaList[JavaMap[String, String]]]
.asScala
.map(toModule)

val errors = registryClass.getMethod("shareErrors")
.invoke(null)
.asInstanceOf[JavaMap[String, JavaList[Throwable]]]
.asScala
.map(toTypeError)
.toSeq

Status.Instrumentation(present, Option(kanelaVersion), modules.toSeq, errors)
Status.Instrumentation(present, Option(kanelaVersion), modules.toSeq)
} catch {
case t: Throwable =>
if (warnIfFailed) {
if (warnIfFailed || true) {
t match {
case _: ClassNotFoundException if warnIfFailed =>
case _: ClassNotFoundException =>
_logger.warn(
"Failed to load the instrumentation modules status because the Kanela agent is not available"
)

case t: Throwable if warnIfFailed =>
case t: Throwable =>
_logger.warn("Failed to load the instrumentation modules status", t)
}
}

Status.Instrumentation(false, None, Seq.empty, Seq.empty)
Status.Instrumentation(false, None, Seq.empty)
}
}

Expand All @@ -101,13 +93,4 @@ object InstrumentationStatus {
JBoolean.parseBoolean(map.get("active"))
)
}

/**
* Transforms a pair of information into a type error instance. The convention of the first element being the type
* name is tied to Kanela's implementation
*/
private def toTypeError(pair: (String, JavaList[Throwable])): TypeError = {
val (typeName, errors) = pair
TypeError(typeName, errors.asScala.toSeq)
}
}
Loading