Skip to content

Commit

Permalink
Generate our own sun.misc.Unsafe if it is not available (#4124)
Browse files Browse the repository at this point in the history
* Generate our own sun.misc.Unsafe if it is not available

* skip generating invokeCleaner method

* grpc isn't shaded so setting system property doesn't affect only our bundled copy

* generate invokeCleaner when it is present in internal unsafe
  • Loading branch information
laurit committed Sep 23, 2021
1 parent 8066f27 commit 0f3d0cb
Show file tree
Hide file tree
Showing 8 changed files with 539 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,17 @@ protected Class<?> findClass(String name) throws ClassNotFoundException {
}

definePackageIfNeeded(name);
return defineClass(name, bytes, 0, bytes.length, codeSource);
return defineClass(name, bytes);
}

// find class from agent initializer jar
return super.findClass(name);
}

public Class<?> defineClass(String name, byte[] bytes) {
return defineClass(name, bytes, 0, bytes.length, codeSource);
}

private byte[] getJarEntryBytes(JarEntry jarEntry) throws IOException {
int size = (int) jarEntry.getSize();
byte[] buffer = new byte[size];
Expand Down
1 change: 1 addition & 0 deletions javaagent-tooling/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ dependencies {
implementation(project(":javaagent-bootstrap"))
implementation(project(":javaagent-extension-api"))
implementation(project(":javaagent-instrumentation-api"))
implementation(project(":javaagent-tooling:javaagent-tooling-java9"))
implementation(project(":instrumentation-api"))
implementation(project(":instrumentation-api-annotation-support"))
implementation(project(":muzzle"))
Expand Down
19 changes: 19 additions & 0 deletions javaagent-tooling/javaagent-tooling-java9/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
plugins {
id("otel.java-conventions")
id("otel.publish-conventions")
}

group = "io.opentelemetry.javaagent"

dependencies {
implementation(project(":javaagent-bootstrap"))

implementation("net.bytebuddy:byte-buddy")
implementation("org.slf4j:slf4j-api")

testImplementation("net.bytebuddy:byte-buddy-agent")
}

otelJava {
minJavaVersionSupported.set(JavaVersion.VERSION_1_9)
}

0 comments on commit 0f3d0cb

Please sign in to comment.