Giter Club home page Giter Club logo

Comments (5)

pderop avatar pderop commented on June 17, 2024 1

it seems that there is a work around: since #297, we can now start the blockhound agent using the jvm option -javaagent, which seems to work well in jpms. You don't need to call BlockHound.install() from the code, just start the jvm with the -javaagent:; and blockhound will even be able to locate BlockHoundIntegration plugins declared inside modules (named, un-named, or automatic modules), because ServiceLoader also locates SPIs from modules.

I'm attaching a sample project (see README.MD file), which is using reactor-netty in a jpms environment:

blockhound-jpms.tgz

from blockhound.

simonbasle avatar simonbasle commented on June 17, 2024

Side note found while reproducing: for the agent to attach, here is the module-info.java that I ended up with:

module blockhoundNpe.main {
	requires jdk.attach; //required for bytebuddy to attach
	requires jdk.unsupported; //required for Unsafe access by log4j
	requires reactor.blockhound;
	requires spring.boot;
	requires spring.boot.autoconfigure;
}

Otherwise, an IllegalStateException: No compatible attachment provider is available is thrown by bytebuddy.

from blockhound.

simonbasle avatar simonbasle commented on June 17, 2024

I'll need @bsideup's expertise here. It looks like with modules there is either an issue with BlockHoundRuntime being loaded outside the bootstrap classloader, or some initialization change that leads to out-of-order usage vs loading of blockhound...

In any case, BlockhoundRuntime.STATE.withInitial block sees null values for the predicates and the blockingMethodConsumer.

I tried to give these default values, but that renders Blockhound#testInstrumentation non-functional 😞

from blockhound.

KasperDeng avatar KasperDeng commented on June 17, 2024

I met the same issue in open JDK 11. Anyone can support it or fix it? It looks the BlockHound community is inactive now.

0 = {StackTraceElement@3075} "reactor.blockhound.BlockHoundRuntime.lambda$static$0(BlockHoundRuntime.java:62)"
1 = {StackTraceElement@3076} "java.base/java.lang.ThreadLocal$SuppliedThreadLocal.initialValue(ThreadLocal.java:305)"
2 = {StackTraceElement@3077} "java.base/java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:195)"
3 = {StackTraceElement@3078} "java.base/java.lang.ThreadLocal.get(ThreadLocal.java:172)"
4 = {StackTraceElement@3079} "java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)"
5 = {StackTraceElement@3080} "reactor.blockhound.TestThread.(TestThread.java:29)"
6 = {StackTraceElement@3081} "reactor.blockhound.BlockHound$Builder.testInstrumentation(BlockHound.java:462)"
7 = {StackTraceElement@3082} "reactor.blockhound.BlockHound$Builder.install(BlockHound.java:445)"
8 = {StackTraceElement@3083} "reactor.blockhound.BlockHound.install(BlockHound.java:95)"

from blockhound.

pderop avatar pderop commented on June 17, 2024

I'm closing this issue because there is a work around (see previous posted sample demo project).
Feel free to reopen if needed.

from blockhound.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.