Skip to content

Commit db2c3ed

Browse files
authored
Throw more helpful error if kanela-agent jar is undiscoverable (#1393)
* throw more helpful error if kanela-agent jar is undiscoverable; log errors in case of weird build surprises * revert ci version bump (???) * dedup
1 parent 820d0d3 commit db2c3ed

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

build.sbt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,7 +1007,6 @@ lazy val bundle = (project in file("bundle"))
10071007
`kamon-runtime-attacher`
10081008
)
10091009

1010-
import com.lightbend.sbt.javaagent.Modules
10111010
import BundleKeys._
10121011

10131012
lazy val commonBundleSettings = Seq(
@@ -1045,8 +1044,8 @@ lazy val `kamon-runtime-attacher` = (project in file("bundle/kamon-runtime-attac
10451044
moduleName := "kamon-runtime-attacher",
10461045
buildInfoPackage := "kamon.runtime.attacher",
10471046
buildInfoKeys := Seq[BuildInfoKey](kanelaAgentJarName),
1048-
kanelaAgentJar := update.value.matching(Modules.exactFilter(kanelaAgent)).head,
1049-
kanelaAgentJarName := kanelaAgentJar.value.getName,
1047+
kanelaAgentJar := BaseProject.findKanelaAgentJar.value,
1048+
kanelaAgentJarName := BaseProject.findKanelaAgentJar.value.getName,
10501049
Compile / resourceGenerators += Def.task(Seq(kanelaAgentJar.value)).taskValue,
10511050
assembly / assemblyShadeRules := Seq(
10521051
ShadeRule.zap("**module-info").inAll,

bundle/kamon-runtime-attacher/src/main/scala/kamon/runtime/Attacher.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ object Attacher {
2929

3030
} else {
3131

32-
val embeddedAgentFile = Attacher.getClass.getClassLoader.getResourceAsStream(BuildInfo.kanelaAgentJarName)
32+
val embeddedAgentFile =
33+
Option(Attacher.getClass.getClassLoader.getResourceAsStream(BuildInfo.kanelaAgentJarName))
34+
.getOrElse(throw new RuntimeException(s"Couldn't find kanela jar resource '${BuildInfo.kanelaAgentJarName}'"))
3335
val temporaryAgentFile = Files.createTempFile(BuildInfo.kanelaAgentJarName, ".jar")
3436
Files.copy(embeddedAgentFile, temporaryAgentFile, StandardCopyOption.REPLACE_EXISTING)
3537

project/Build.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,28 @@ object BaseProject extends AutoPlugin {
220220
}
221221

222222
def findKanelaAgentJar = Def.task {
223+
val hasSemver = """.*[0-9]+\.[0-9]+\.[0-9]+.*"""
223224
update.value.matching {
224225
moduleFilter(organization = "io.kamon", name = "kanela-agent") &&
225226
artifactFilter(`type` = "jar")
226-
}.head
227+
}.toList match {
228+
case s @ Nil => throw new NoClassDefFoundError("No kanela agent jar found")
229+
case h +: Nil =>
230+
if (h.getName.matches(hasSemver)) println("Single matching kanela-agent jar found")
231+
else System.err.println("kanela-agent jar name did not contain version")
232+
h
233+
case s =>
234+
System.err.println(s"Multiple matching jars - ${s.map(f => f.getName)}")
235+
s.filter(_.getName.matches(hasSemver)) match {
236+
case Nil =>
237+
System.err.println("No jars matching semver ")
238+
s.head
239+
case v +: Nil => v
240+
case more =>
241+
System.err.println("Multiple jars matching semver ")
242+
more.head
243+
}
244+
}
227245
}
228246

229247
private def defaultPomExtra() = {

0 commit comments

Comments
 (0)