From af7a83e6021541b584e3af55650ff228a0a98e82 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:47:47 -0700 Subject: [PATCH 01/18] Change default javaagent to all, introduce slim --- javaagent/build.gradle.kts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index 8fd938f657a5..6c3d34813f7d 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -142,13 +142,13 @@ tasks { } // Includes instrumentations, but not exporters - val shadowJar by existing(ShadowJar::class) { + val slimShadowJar by registering(ShadowJar::class) { configurations = listOf(bootstrapLibs) dependsOn(relocateJavaagentLibs) isolateClasses(relocateJavaagentLibs.get().outputs.files) - archiveClassifier.set("") + archiveClassifier.set("slim") manifest { attributes(jar.get().manifest.attributes) @@ -163,7 +163,7 @@ tasks { } // Includes everything needed for OOTB experience - val fullJavaagentJar by registering(ShadowJar::class) { + val shadowJar by existing(ShadowJar::class) { configurations = listOf(bootstrapLibs) dependsOn(relocateJavaagentLibs, relocateExporterLibs) @@ -172,10 +172,10 @@ tasks { duplicatesStrategy = DuplicatesStrategy.EXCLUDE - archiveClassifier.set("all") + archiveClassifier.set("") manifest { - attributes(shadowJar.get().manifest.attributes) + attributes(slimShadowJar.get().manifest.attributes) } } @@ -191,7 +191,7 @@ tasks { archiveClassifier.set("base") manifest { - attributes(shadowJar.get().manifest.attributes) + attributes(slimShadowJar.get().manifest.attributes) } } @@ -205,18 +205,18 @@ tasks { } assemble { - dependsOn(shadowJar, fullJavaagentJar, baseJavaagentJar) + dependsOn(slimShadowJar, shadowJar, baseJavaagentJar) } withType().configureEach { - dependsOn(fullJavaagentJar) - inputs.file(fullJavaagentJar.get().archiveFile) + dependsOn(shadowJar) + inputs.file(shadowJar.get().archiveFile) jvmArgs("-Dotel.javaagent.debug=true") doFirst { // Defining here to allow jacoco to be first on the command line. - jvmArgs("-javaagent:${fullJavaagentJar.get().archiveFile.get().asFile}") + jvmArgs("-javaagent:${shadowJar.get().archiveFile.get().asFile}") } testLogging { @@ -235,7 +235,7 @@ tasks { publishing { publications { named("maven") { - artifact(fullJavaagentJar) + artifact(slimShadowJar) } } } From d99849d206b6b8b5ae2bb0de61688717b54212ae Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:46:40 -0700 Subject: [PATCH 02/18] Update release builds --- .github/workflows/patch-release-build.yml | 4 ++-- .github/workflows/release-build.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/patch-release-build.yml b/.github/workflows/patch-release-build.yml index cc5d635e57d2..9c9c900473e9 100644 --- a/.github/workflows/patch-release-build.yml +++ b/.github/workflows/patch-release-build.yml @@ -265,6 +265,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}-all.jar - asset_name: opentelemetry-javaagent-all.jar + asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}.jar + asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 064d8f82681b..768d8e17435a 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -173,6 +173,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}-all.jar - asset_name: opentelemetry-javaagent-all.jar + asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}.jar + asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive From 9c6f04f5a52eaaf59caa1e60ac8d1a62d3b3edd1 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:48:30 -0700 Subject: [PATCH 03/18] Update examples build --- examples/extension/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/extension/build.gradle b/examples/extension/build.gradle index a49c2d8ddb57..373ba93c8cf3 100644 --- a/examples/extension/build.gradle +++ b/examples/extension/build.gradle @@ -92,7 +92,7 @@ dependencies { testRuntimeOnly("ch.qos.logback:logback-classic:1.2.3") //Otel Java instrumentation that we use and extend during integration tests - otel("io.opentelemetry.javaagent:opentelemetry-javaagent:${versions.opentelemetryJavaagent}:all") + otel("io.opentelemetry.javaagent:opentelemetry-javaagent:${versions.opentelemetryJavaagent}") //TODO remove when start using io.opentelemetry.instrumentation.javaagent-instrumentation plugin add("muzzleTooling", "io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions.opentelemetryJavaagentAlpha}") @@ -111,7 +111,7 @@ task agentManifest(type: Copy) { //The location of extension directory inside agent jar is hard-coded in the agent source code task extendedAgent(type: Jar) { dependsOn agentManifest - archiveFileName = "opentelemetry-javaagent-all.jar" + archiveFileName = "opentelemetry-javaagent.jar" manifest.from "$buildDir/META-INF/MANIFEST.MF" from zipTree(configurations.otel.singleFile) from(tasks.shadowJar.archiveFile) { From 9b20ff04c53be55ced61d4b1fbcbcaa100c860bb Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:53:06 -0700 Subject: [PATCH 04/18] Update benchmark-overhead --- .../src/test/java/io/opentelemetry/agents/AgentResolver.java | 2 +- .../io/opentelemetry/agents/LatestAgentSnapshotResolver.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/benchmark-overhead/src/test/java/io/opentelemetry/agents/AgentResolver.java b/benchmark-overhead/src/test/java/io/opentelemetry/agents/AgentResolver.java index abc84e39b8a3..77863e370ef5 100644 --- a/benchmark-overhead/src/test/java/io/opentelemetry/agents/AgentResolver.java +++ b/benchmark-overhead/src/test/java/io/opentelemetry/agents/AgentResolver.java @@ -43,7 +43,7 @@ private Path downloadAgent(URL agentUrl) throws Exception { OkHttpClient client = new OkHttpClient(); Response response = client.newCall(request).execute(); byte[] raw = response.body().bytes(); - Path path = Paths.get(".", "opentelemetry-javaagent-all.jar"); + Path path = Paths.get(".", "opentelemetry-javaagent.jar"); Files.write(path, raw, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING); return path; } diff --git a/benchmark-overhead/src/test/java/io/opentelemetry/agents/LatestAgentSnapshotResolver.java b/benchmark-overhead/src/test/java/io/opentelemetry/agents/LatestAgentSnapshotResolver.java index 8518347017ab..abc2880987bc 100644 --- a/benchmark-overhead/src/test/java/io/opentelemetry/agents/LatestAgentSnapshotResolver.java +++ b/benchmark-overhead/src/test/java/io/opentelemetry/agents/LatestAgentSnapshotResolver.java @@ -35,7 +35,7 @@ Optional resolve() throws IOException { String latestFilename = fetchLatestFilename(version); String url = BASE_URL + "/" + version + "/" + latestFilename; byte[] jarBytes = fetchBodyBytesFrom(url); - Path path = Paths.get(".", "opentelemetry-javaagent-SNAPSHOT-all.jar"); + Path path = Paths.get(".", "opentelemetry-javaagent-SNAPSHOT.jar"); Files.write(path, jarBytes, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING); return Optional.of(path); } @@ -49,11 +49,12 @@ private String fetchLatestFilename(String version) throws IOException { .filter(elem -> { String classifier = $(elem).child("classifier").content(); String extension = $(elem).child("extension").content(); + // TODO (trask) this needs to be updated now that no more "all" artifact return "all".equals(classifier) && "jar".equals(extension); }) .map(e -> $(e).child("value").content()) .findFirst() - .map(value -> "opentelemetry-javaagent-" + value + "-all.jar") + .map(value -> "opentelemetry-javaagent-" + value + ".jar") .orElseThrow(); } From 6ea1a07d901a66e363d5973896927baf5471ed36 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:53:15 -0700 Subject: [PATCH 05/18] Update benchmark-e2e --- .../java/io/opentelemetry/e2ebenchmark/AgentBenchmark.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/AgentBenchmark.java b/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/AgentBenchmark.java index af9a6c2e4208..559340fad5bb 100644 --- a/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/AgentBenchmark.java +++ b/benchmark-e2e/src/main/java/io/opentelemetry/e2ebenchmark/AgentBenchmark.java @@ -79,9 +79,9 @@ private void runBenchmark() throws InterruptedException { .withLogConsumer(new Slf4jLogConsumer(logger)) .withNetworkAliases("app") .withCopyFileToContainer( - MountableFile.forHostPath(agentPath), "/opentelemetry-javaagent-all.jar") + MountableFile.forHostPath(agentPath), "/opentelemetry-javaagent.jar") .withEnv("OTEL_EXPORTER_OTLP_ENDPOINT", "collector:4317") - .withEnv("JAVA_TOOL_OPTIONS", "-javaagent:/opentelemetry-javaagent-all.jar") + .withEnv("JAVA_TOOL_OPTIONS", "-javaagent:/opentelemetry-javaagent.jar") .withExposedPorts(8080); containers.add(app); From 6ab2c687b4438d361757a0ee593cf26be738710f Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:53:46 -0700 Subject: [PATCH 06/18] Update docs where ok pre-release --- CONTRIBUTING.md | 2 +- docs/contributing/debugging.md | 2 +- docs/contributing/javaagent-jar-components.md | 4 ++-- docs/manual-instrumentation.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ddfd6fcf5e7b..ba0d8a506d80 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,7 +32,7 @@ java -version and then you can find the java agent artifact at -`javaagent/build/libs/opentelemetry-javaagent--all.jar`. +`javaagent/build/libs/opentelemetry-javaagent-.jar`. ### IntelliJ setup diff --git a/docs/contributing/debugging.md b/docs/contributing/debugging.md index 28a28aec4cac..71127c929086 100644 --- a/docs/contributing/debugging.md +++ b/docs/contributing/debugging.md @@ -33,5 +33,5 @@ The following example shows remote debugger configuration. The breakpoints should work in any code except ByteBuddy advice methods. ```bash -java -agentlib:jdwp="transport=dt_socket,server=y,suspend=y,address=5000" -javaagent:opentelemetry-javaagent--all.jar -jar app.jar +java -agentlib:jdwp="transport=dt_socket,server=y,suspend=y,address=5000" -javaagent:opentelemetry-javaagent-.jar -jar app.jar ``` diff --git a/docs/contributing/javaagent-jar-components.md b/docs/contributing/javaagent-jar-components.md index b401e9643d21..206d5e741913 100644 --- a/docs/contributing/javaagent-jar-components.md +++ b/docs/contributing/javaagent-jar-components.md @@ -72,7 +72,7 @@ still access helper classes from bootstrap classloader. #### Agent jar structure If you now look inside -`javaagent/build/libs/opentelemetry-javaagent--all.jar`, you will see the +`javaagent/build/libs/opentelemetry-javaagent-.jar`, you will see the following "clusters" of classes: Available in the system class loader: @@ -94,7 +94,7 @@ during creation of `javaagent` jar file by Shadow Gradle plugin Available in the agent class loader: - `inst/` - contains `javaagent-tooling` and `javaagent-extension-api` modules and `instrumentation` submodules, loaded and isolated inside `AgentClassLoader`. - Including OpenTelemetry SDK (and the built-in exporters when using the `-all` artifact). + Includes the OpenTelemetry SDK. ![Agent initialization sequence](initialization-sequence.svg) [Image source](https://docs.google.com/drawings/d/1GHAcJ8AOaf_v2Ip82cQD9dN0mtvSk2C1B11KfwV2U8o) diff --git a/docs/manual-instrumentation.md b/docs/manual-instrumentation.md index de18e348090f..a5e5f5c957c1 100644 --- a/docs/manual-instrumentation.md +++ b/docs/manual-instrumentation.md @@ -18,7 +18,7 @@ or they might want to manually create spans for their own custom code. # Dependencies -> :warning: prior to version 1.0.0, `opentelemetry-javaagent-all.jar` +> :warning: prior to version 1.0.0, the Java agent only supports manual instrumentation using the `opentelemetry-api` version with the same version number as the Java agent you are using. Starting with 1.0.0, the Java agent will start supporting multiple (1.0.0+) versions of `opentelemetry-api`. From 6e53ea06c9f10709e4159f60553f0ded29341230 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 16:53:53 -0700 Subject: [PATCH 07/18] Update misc --- .../internal-eclipse-osgi-3.6/javaagent/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/build.gradle.kts b/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/build.gradle.kts index 3ba12aca15b5..26215202ab79 100644 --- a/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/build.gradle.kts +++ b/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/build.gradle.kts @@ -11,8 +11,8 @@ plugins { // TODO write a smoke test that does the following: // -// docker run --mount 'type=bind,src=$AGENT_PATH,dst=/opentelemetry-javaagent-all.jar' -// -e JAVA_TOOL_OPTIONS=-javaagent:/opentelemetry-javaagent-all.jar +// docker run --mount 'type=bind,src=$AGENT_PATH,dst=/opentelemetry-javaagent.jar' +// -e JAVA_TOOL_OPTIONS=-javaagent:/opentelemetry-javaagent.jar // wso2/wso2ei-business-process:6.5.0 // // without this instrumentation, the following error will appear in the docker logs: From 2a4839cac5bd4d230146304c119b249ca60a8608 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 18:35:49 -0700 Subject: [PATCH 08/18] Fix references to fullJavaagentJar --- benchmark-e2e/build.gradle.kts | 4 ++-- benchmark-overhead-jmh/build.gradle.kts | 2 +- benchmark/build.gradle.kts | 2 +- smoke-tests/build.gradle.kts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmark-e2e/build.gradle.kts b/benchmark-e2e/build.gradle.kts index 507cce9a7990..20d65fccb971 100644 --- a/benchmark-e2e/build.gradle.kts +++ b/benchmark-e2e/build.gradle.kts @@ -14,11 +14,11 @@ dependencies { tasks { test { - dependsOn(":javaagent:fullJavaagentJar") + dependsOn(":javaagent:shadowJar") maxParallelForks = 2 doFirst { - jvmArgs("-Dio.opentelemetry.smoketest.agent.shadowJar.path=${project(":javaagent").tasks.getByName("fullJavaagentJar").archivePath}") + jvmArgs("-Dio.opentelemetry.smoketest.agent.shadowJar.path=${project(":javaagent").tasks.getByName("shadowJar").archivePath}") } } } diff --git a/benchmark-overhead-jmh/build.gradle.kts b/benchmark-overhead-jmh/build.gradle.kts index 72a10b6592c6..9e11c695d78d 100644 --- a/benchmark-overhead-jmh/build.gradle.kts +++ b/benchmark-overhead-jmh/build.gradle.kts @@ -39,7 +39,7 @@ tasks { val jmhStartFlightRecording = gradle.startParameter.projectProperties.get("jmh.startFlightRecording") named("jmh") { - val shadowTask = project(":javaagent").tasks.named("fullJavaagentJar").get() + val shadowTask = project(":javaagent").tasks.named("shadowJar").get() inputs.files(layout.files(shadowTask)) // note: without an exporter, toSpanData() won't even be called diff --git a/benchmark/build.gradle.kts b/benchmark/build.gradle.kts index f6ce1550f0a8..3fcba8f65af2 100644 --- a/benchmark/build.gradle.kts +++ b/benchmark/build.gradle.kts @@ -54,7 +54,7 @@ tasks { } named("jmh") { - dependsOn(":javaagent:fullJavaagentJar") + dependsOn(":javaagent:shadowJar") } } diff --git a/smoke-tests/build.gradle.kts b/smoke-tests/build.gradle.kts index 80b275261fbf..e5288f98c02d 100644 --- a/smoke-tests/build.gradle.kts +++ b/smoke-tests/build.gradle.kts @@ -43,7 +43,7 @@ dependencies { tasks { test { - inputs.files(project(":javaagent").tasks.getByName("fullJavaagentJar").outputs.files) + inputs.files(project(":javaagent").tasks.getByName("shadowJar").outputs.files) testLogging.showStandardStreams = true @@ -78,7 +78,7 @@ tasks { } } - val shadowTask = project(":javaagent").tasks.named("fullJavaagentJar").get() + val shadowTask = project(":javaagent").tasks.named("shadowJar").get() inputs.files(layout.files(shadowTask)) doFirst { From 64df703b06f9bc1a6d523fa2f2be5c553f02a190 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 20:07:47 -0700 Subject: [PATCH 09/18] Fix it --- javaagent/build.gradle.kts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index 6c3d34813f7d..d09201d66996 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -141,14 +141,17 @@ tasks { archiveFileName.set("exporterLibs-relocated.jar") } - // Includes instrumentations, but not exporters - val slimShadowJar by registering(ShadowJar::class) { + // Includes everything needed for OOTB experience + val shadowJar by existing(ShadowJar::class) { configurations = listOf(bootstrapLibs) - dependsOn(relocateJavaagentLibs) + dependsOn(relocateJavaagentLibs, relocateExporterLibs) isolateClasses(relocateJavaagentLibs.get().outputs.files) + isolateClasses(relocateExporterLibs.get().outputs.files) - archiveClassifier.set("slim") + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + archiveClassifier.set("") manifest { attributes(jar.get().manifest.attributes) @@ -162,20 +165,17 @@ tasks { } } - // Includes everything needed for OOTB experience - val shadowJar by existing(ShadowJar::class) { + // Includes instrumentations, but not exporters + val slimShadowJar by registering(ShadowJar::class) { configurations = listOf(bootstrapLibs) - dependsOn(relocateJavaagentLibs, relocateExporterLibs) + dependsOn(relocateJavaagentLibs) isolateClasses(relocateJavaagentLibs.get().outputs.files) - isolateClasses(relocateExporterLibs.get().outputs.files) - - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - archiveClassifier.set("") + archiveClassifier.set("slim") manifest { - attributes(slimShadowJar.get().manifest.attributes) + attributes(shadowJar.get().manifest.attributes) } } @@ -191,7 +191,7 @@ tasks { archiveClassifier.set("base") manifest { - attributes(slimShadowJar.get().manifest.attributes) + attributes(shadowJar.get().manifest.attributes) } } @@ -205,7 +205,7 @@ tasks { } assemble { - dependsOn(slimShadowJar, shadowJar, baseJavaagentJar) + dependsOn(shadowJar, slimShadowJar, baseJavaagentJar) } withType().configureEach { From 9c43849c678f04ff2d253c0ee8d112871e056a8d Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 20:15:00 -0700 Subject: [PATCH 10/18] Delete doc for pre-1.0 releases --- docs/manual-instrumentation.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/manual-instrumentation.md b/docs/manual-instrumentation.md index a5e5f5c957c1..4374e3be5c06 100644 --- a/docs/manual-instrumentation.md +++ b/docs/manual-instrumentation.md @@ -18,11 +18,6 @@ or they might want to manually create spans for their own custom code. # Dependencies -> :warning: prior to version 1.0.0, the Java agent -only supports manual instrumentation using the `opentelemetry-api` version with the same version -number as the Java agent you are using. Starting with 1.0.0, the Java agent will start supporting -multiple (1.0.0+) versions of `opentelemetry-api`. - You'll need to add a dependency on the `opentelemetry-api` library to get started; if you intend to use the `@WithSpan` annotation, also include the `opentelemetry-extension-annotations` dependency. From 5113576351d048040913068349fe371f7c9bc743 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 20:20:12 -0700 Subject: [PATCH 11/18] Attach backwards compatible "all" artifact to releases --- .github/workflows/patch-release-build.yml | 12 ++++++++++++ .github/workflows/release-build.yml | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/.github/workflows/patch-release-build.yml b/.github/workflows/patch-release-build.yml index 9c9c900473e9..3f498c3e3f3e 100644 --- a/.github/workflows/patch-release-build.yml +++ b/.github/workflows/patch-release-build.yml @@ -268,3 +268,15 @@ jobs: asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}.jar asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive + + # TODO (trask) delete this at some point in the future + - name: Upload Release Asset (backwards compatible "all" artifact) + id: upload-release-asset + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}.jar + asset_name: opentelemetry-javaagent-all.jar + asset_content_type: application/java-archive diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 768d8e17435a..cee56d12da41 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -176,3 +176,15 @@ jobs: asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}.jar asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive + + # TODO (trask) delete this at some point in the future + - name: Upload Release Asset (backwards compatible "all" artifact) + id: upload-release-asset + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: javaagent/build/libs/opentelemetry-javaagent-${{ github.event.inputs.version }}.jar + asset_name: opentelemetry-javaagent-all.jar + asset_content_type: application/java-archive From 42f4830994fad325ba83cd292eb4bf1e5801cae6 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 20:21:54 -0700 Subject: [PATCH 12/18] Comment --- .github/workflows/patch-release-build.yml | 2 +- .github/workflows/release-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/patch-release-build.yml b/.github/workflows/patch-release-build.yml index 3f498c3e3f3e..a9cf0db14714 100644 --- a/.github/workflows/patch-release-build.yml +++ b/.github/workflows/patch-release-build.yml @@ -269,7 +269,7 @@ jobs: asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive - # TODO (trask) delete this at some point in the future + # TODO (trask) delete this after the 1.6.0 release - name: Upload Release Asset (backwards compatible "all" artifact) id: upload-release-asset uses: actions/upload-release-asset@v1.0.2 diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index cee56d12da41..7fae38d4e8e3 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -177,7 +177,7 @@ jobs: asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive - # TODO (trask) delete this at some point in the future + # TODO (trask) delete this after the 1.6.0 release - name: Upload Release Asset (backwards compatible "all" artifact) id: upload-release-asset uses: actions/upload-release-asset@v1.0.2 From 168702087217d0250433e99fb62cdc1d736ff80c Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 20:24:05 -0700 Subject: [PATCH 13/18] Comment --- .github/workflows/patch-release-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/patch-release-build.yml b/.github/workflows/patch-release-build.yml index a9cf0db14714..7c028c5be368 100644 --- a/.github/workflows/patch-release-build.yml +++ b/.github/workflows/patch-release-build.yml @@ -269,7 +269,7 @@ jobs: asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive - # TODO (trask) delete this after the 1.6.0 release + # TODO (trask) delete this after the 1.7.0 release (to make sure it is used for any 1.6.x patches) - name: Upload Release Asset (backwards compatible "all" artifact) id: upload-release-asset uses: actions/upload-release-asset@v1.0.2 From ae7e2d125f9cd28ba38c90bcd4d8e44d32d57310 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 20:58:04 -0700 Subject: [PATCH 14/18] guessing --- javaagent/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index d09201d66996..31d1ae9e6594 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -145,7 +145,9 @@ tasks { val shadowJar by existing(ShadowJar::class) { configurations = listOf(bootstrapLibs) - dependsOn(relocateJavaagentLibs, relocateExporterLibs) + // without an explicit dependency on jar here, :javaagent:test fails on CI because :javaagent:jar + // runs after :javaagent:shadowJar and loses (at least) the manifest entries + dependsOn(jar, relocateJavaagentLibs, relocateExporterLibs) isolateClasses(relocateJavaagentLibs.get().outputs.files) isolateClasses(relocateExporterLibs.get().outputs.files) From 2b9de15bfcfa2c19295fc46d6f487496788c90a4 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Sun, 12 Sep 2021 21:25:22 -0700 Subject: [PATCH 15/18] fix --- examples/distro/agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/distro/agent/build.gradle b/examples/distro/agent/build.gradle index b1adb6210ad8..81d45d116f4a 100644 --- a/examples/distro/agent/build.gradle +++ b/examples/distro/agent/build.gradle @@ -13,7 +13,7 @@ configurations { dependencies { customShadow project(path: ":custom", configuration: "shadow") customShadow project(path: ":instrumentation", configuration: "shadow") - implementation "io.opentelemetry.javaagent:opentelemetry-javaagent:${versions.opentelemetryJavaagent}:all" + implementation "io.opentelemetry.javaagent:opentelemetry-javaagent:${versions.opentelemetryJavaagent}" } CopySpec isolateSpec() { From f01fbf61fbe4566aa6ba76b30c95c62f648c7339 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 22 Sep 2021 22:53:36 -0700 Subject: [PATCH 16/18] Update version --- examples/distro/build.gradle | 8 ++++---- examples/extension/build.gradle | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/distro/build.gradle b/examples/distro/build.gradle index e9673460f37d..94afb2479224 100644 --- a/examples/distro/build.gradle +++ b/examples/distro/build.gradle @@ -10,10 +10,10 @@ subprojects { versions = [ opentelemetry : "1.6.0", opentelemetryAlpha : "1.6.0-alpha", - opentelemetryJavaagent : "1.6.0-SNAPSHOT", - opentelemetryJavaagentAlpha: "1.6.0-alpha-SNAPSHOT", - bytebuddy : "1.10.18", - guava : "30.1-jre" + opentelemetryJavaagent : "1.7.0-SNAPSHOT", + opentelemetryJavaagentAlpha: "1.7.0-alpha-SNAPSHOT", + bytebuddy : "1.10.18", + guava : "30.1-jre" ] deps = [ diff --git a/examples/extension/build.gradle b/examples/extension/build.gradle index 56208111e1e9..2daae47f65a6 100644 --- a/examples/extension/build.gradle +++ b/examples/extension/build.gradle @@ -23,8 +23,8 @@ ext { versions = [ opentelemetry : "1.6.0", opentelemetryAlpha : "1.6.0-alpha", - opentelemetryJavaagent : "1.6.0-SNAPSHOT", - opentelemetryJavaagentAlpha: "1.6.0-alpha-SNAPSHOT", + opentelemetryJavaagent : "1.7.0-SNAPSHOT", + opentelemetryJavaagentAlpha: "1.7.0-alpha-SNAPSHOT", ] deps = [ From 73226a07017d8f4dfe34321d2f1e2fd9e3927b90 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Tue, 28 Sep 2021 10:52:17 -0700 Subject: [PATCH 17/18] Add otlp/grpc exporter to slim artifact --- .github/workflows/release-build.yml | 2 +- javaagent/build.gradle.kts | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 7fae38d4e8e3..0e6a5e155932 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -177,7 +177,7 @@ jobs: asset_name: opentelemetry-javaagent.jar asset_content_type: application/java-archive - # TODO (trask) delete this after the 1.6.0 release + # TODO (trask) delete this after the 1.7.0 release - name: Upload Release Asset (backwards compatible "all" artifact) id: upload-release-asset uses: actions/upload-release-asset@v1.0.2 diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index 2832fae1d668..47eb55bea68f 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -35,9 +35,14 @@ val exporterLibs by configurations.creating { isCanBeResolved = true isCanBeConsumed = false } +// this configuration collects just exporter libs for slim artifact (also placed in the agent classloader & isolated from the instrumented application) +val exporterSlimLibs by configurations.creating { + isCanBeResolved = true + isCanBeConsumed = false +} // exclude dependencies that are to be placed in bootstrap from agent libs - they won't be added to inst/ -listOf(javaagentLibs, exporterLibs).forEach { +listOf(javaagentLibs, exporterLibs, exporterSlimLibs).forEach { it.run { exclude("org.slf4j") exclude("io.opentelemetry", "opentelemetry-api") @@ -73,6 +78,10 @@ dependencies { exporterLibs(project(":javaagent-exporters")) + exporterSlimLibs("io.opentelemetry:opentelemetry-exporter-otlp") + exporterSlimLibs("io.opentelemetry:opentelemetry-exporter-otlp-metrics") + exporterSlimLibs("io.grpc:grpc-okhttp:1.41.0") + // We only have compileOnly dependencies on these to make sure they don't leak into POMs. licenseReportDependencies("com.github.ben-manes.caffeine:caffeine") { isTransitive = false @@ -143,6 +152,12 @@ tasks { archiveFileName.set("exporterLibs-relocated.jar") } + val relocateExporterSlimLibs by registering(ShadowJar::class) { + configurations = listOf(exporterSlimLibs) + + archiveFileName.set("exporterSlimLibs-relocated.jar") + } + // Includes everything needed for OOTB experience val shadowJar by existing(ShadowJar::class) { configurations = listOf(bootstrapLibs) @@ -173,8 +188,9 @@ tasks { val slimShadowJar by registering(ShadowJar::class) { configurations = listOf(bootstrapLibs) - dependsOn(relocateJavaagentLibs) + dependsOn(relocateJavaagentLibs, relocateExporterSlimLibs) isolateClasses(relocateJavaagentLibs.get().outputs.files) + isolateClasses(relocateExporterSlimLibs.get().outputs.files) archiveClassifier.set("slim") From 3db6c4575b528db4e42959f22142ddd3d684903a Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Wed, 29 Sep 2021 09:56:16 -0700 Subject: [PATCH 18/18] Fix comment --- javaagent/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts index 47eb55bea68f..6dfdded223a8 100644 --- a/javaagent/build.gradle.kts +++ b/javaagent/build.gradle.kts @@ -184,7 +184,7 @@ tasks { } } - // Includes instrumentations, but not exporters + // Includes instrumentations plus the OTLP/gRPC exporters val slimShadowJar by registering(ShadowJar::class) { configurations = listOf(bootstrapLibs)