BlockHound

Java agent to detect blocking calls from non-blocking threads.

APACHE-2.0 License

Stars
1.3K

Bot releases are visible (Hide)

BlockHound - 1.0.9.RELEASE Latest Release

Published by pderop 6 months ago

What's Changed

๐Ÿš€ Features / Enhancements

  • Detect jdk major version using Runtime class (#408) @pderop
  • Flag inner Thread methods for JDK 19 and greater (#395) @Badbond
  • Remove IntrinsicCandidate annotation on non-native delegate methods. (#393) @pderop
  • Gradle Kotlin DSL examples (#379) @mfvanek

๐Ÿ› Bug Fixes

  • Fix instrumentation for Thread.sleep with jdk22 (#407) @pderop

๐Ÿงน Housekeeping

  • Post-release 1.0.8 (#352) @pderop

๐Ÿ“ฆ Dependency updates

  • Bump de.undercouch.download from 5.4.0 to 5.6.0 (#401) @dependabot
  • Bump net.bytebuddy:byte-buddy from 1.14.4 to 1.14.13 (#406) @dependabot
  • Bump net.bytebuddy:byte-buddy-agent from 1.14.4 to 1.14.13 (#405) @dependabot
  • Bump org.assertj:assertj-core from 3.24.2 to 3.25.3 (#398) @dependabot
  • Bump org.junit.jupiter:junit-jupiter-engine from 5.9.2 to 5.10.2 (#397) @dependabot
  • Bump org.junit.jupiter:junit-jupiter-api from 5.9.2 to 5.10.2 (#396) @dependabot
  • Bump me.champeau.gradle.japicmp from 0.4.1 to 0.4.2 (#368) @dependabot
  • Bump com.google.auto.service:auto-service from 1.0 to 1.1.1 (#365) @dependabot
  • Bump com.google.auto.service:auto-service-annotations from 1.0.1 to 1.1.1 (#364) @dependabot
BlockHound - 1.0.8.RELEASE

Published by pderop over 1 year ago

What's Changed

๐Ÿงน Housekeeping

  • Post-release 1.0.7: bump compatibleVersion and BLOCKHOUND_VERSION (#331) @pderop

๐Ÿ“ฆ Dependency updates

  • Bump net.bytebuddy:byte-buddy from 1.14.3 to 1.14.4 (#351) @dependabot
  • Bump de.undercouch.download from 5.3.1 to 5.4.0 (#346) @dependabot
  • Bump net.bytebuddy:byte-buddy from 1.14.0 to 1.14.3 (#349) @dependabot
  • Bump io.projectreactor:reactor-core from 3.2.2.RELEASE to 3.2.5.RELEASE (#339) @dependabot
  • Bump net.bytebuddy:byte-buddy from 1.13.0 to 1.14.0 (#338) @dependabot
  • Bump net.bytebuddy:byte-buddy from 1.12.23 to 1.13.0 (#335) @dependabot
  • Bump net.bytebuddy:byte-buddy-agent from 1.12.23 to 1.13.0 (#336) @dependabot
  • Bump net.bytebuddy:byte-buddy-agent from 1.12.22 to 1.12.23 (#333) @dependabot
  • Bump net.bytebuddy:byte-buddy from 1.12.22 to 1.12.23 (#332) @dependabot
  • Bump de.undercouch.download from 5.3.0 to 5.3.1 (#334) @dependabot
BlockHound - 1.0.7.RELEASE

Published by github-actions[bot] over 1 year ago

What's Changed

  • Upgrade to GitHub-native Dependabot (#198) @dependabot-preview

๐Ÿš€ Features / Enhancements

  • Reuse compatibleVersion project property in benchmark build.gradle (#330) @pderop
  • Make BlockingMethod serializable (#153) @viliam-durina
  • Added support for japicmp (#325) @pderop
  • Add Premain-Class attribute (#297) @nickcaballero

๐Ÿ› Bug Fixes

  • BlockhoundIntegration SPI plugins ordering (#327) @pderop

๐Ÿ“– Documentation

  • Document how to disallow blocking calls inside allowed blocking calls (#329) @pderop
  • Document how to use Blockhound from Tomcat webapp (#328) @pderop
  • Add uncaught exceptions to test method signature (#326) @pderop
  • Updated doc for -javaagent JVM option (#323) @pderop
  • Update JUnit TestExecutionListener doc link (#252) @Bennett-Lynch

๐Ÿงน Housekeeping

  • Replace testCompile with testImplementation in build/docs (#239) @simonbasle

๐Ÿ“ฆ Dependency updates

  • Bump com.github.johnrengelman.shadow from 6.1.0 to 7.1.2 (#266) @dependabot
  • Upgrade to gradle 7.6 (#324) @pderop
  • Bump assertj-core from 3.24.1 to 3.24.2 (#322) @dependabot
  • Bump byte-buddy from 1.12.21 to 1.12.22 (#321) @dependabot
  • Bump byte-buddy-agent from 1.12.21 to 1.12.22 (#320) @dependabot
  • Bump auto-service from 1.0 to 1.0.1 (#247) @dependabot
  • Bump assertj-core from 3.21.0 to 3.24.1 (#316) @dependabot
  • Bump junit-jupiter-api from 5.8.1 to 5.9.2 (#317) @dependabot
  • Bump junit-jupiter-engine from 5.8.1 to 5.9.2 (#318) @dependabot
  • Upgrade byte-buddy to version 1.12.21 for support of jdk 18+ versions (#312) @pderop
  • Bump org.unbroken-dome.test-sets from 3.0.1 to 4.0.0 (#199) @dependabot-preview
  • Bump auto-service-annotations from 1.0-rc7 to 1.0 (#191) @dependabot-preview
  • Bump assertj-core from 3.19.0 to 3.21.0 (#229) @dependabot
  • Bump junit-jupiter-api from 5.7.1 to 5.8.1 (#232) @dependabot
  • Bump junit-jupiter-engine from 5.7.1 to 5.8.1 (#233) @dependabot
  • Bump byte-buddy-agent from 1.11.15 to 1.11.19 (#237) @dependabot
  • Bump byte-buddy from 1.11.15 to 1.11.19 (#238) @dependabot
  • Bump byte-buddy from 1.10.22 to 1.11.15 (#224) @dependabot
  • Bump byte-buddy-agent from 1.10.22 to 1.11.15 (#223) @dependabot

Contributors

thanks to all people who contributed to this version, and to all issue reporters !

  • @simonbasle (#239, #329)
  • @viliam-durina (#153)
  • @nickcaballero (#297)
  • @Bennett-Lynch (#252)
  • @johnrengelman (#327, #273)
BlockHound - 1.0.6.RELEASE

Published by github-actions[bot] over 3 years ago

What's Changed

  • Ensure junit-platform has compile dep to blockhound in pom (#189) @simonbasle
BlockHound - 1.0.5.RELEASE

Published by github-actions[bot] over 3 years ago

What's Changed

โš ๏ธ Update considerations

  • blockhound-junit-platform's pom.xml declares a dependency to blockhound with runtime scope instead of compile
    • consider adding an explicit dependency to blockhound (using same version number) if it isn't already the case

๐Ÿš€ Features / Enhancements

  • Deploy releases to SonatypeOSS (staging repo) instead of Bintray (#182) @simonbasle

๐Ÿ“– Documentation

  • Document special name in (dis)allowBlockingCallsInside (#185) @simonbasle

๐Ÿงน Housekeeping

  • Deploy releases to SonatypeOSS (staging repo) instead of Bintray (#182) @simonbasle
  • Fix the pom: no module metadata, fix name and description (#181) @simonbasle
  • Switch CD to GitHub Actions (#180) @simonbasle
  • Change Sergei's email in generated pom.xml (#177) @simonbasle
  • Build polish and upgrade, switch to Gradle 6.8.3, snapshot of 1.0.5 (#175) @simonbasle

๐Ÿ“ฆ Dependency updates

  • Bump junit-jupiter-engine from 5.7.0 to 5.7.1 (#168) @dependabot-preview
  • Bump junit-jupiter-api from 5.7.0 to 5.7.1 (#167) @dependabot-preview
  • Bump junit from 4.13.1 to 4.13.2 (#169) @dependabot-preview
  • Bump assertj-core from 3.18.1 to 3.19.0 (#164) @dependabot-preview
  • Bump org.unbroken-dome.test-sets from 2.2.1 to 3.0.1 (#109) @dependabot-preview
  • Bump com.github.johnrengelman.shadow from 4.0.3 to 6.1.0 (#147) @dependabot-preview
  • Bump byte-buddy from 1.10.19 to 1.10.22 (#176) @dependabot-preview
  • Build polish and upgrade, switch to Gradle 6.8.3, snapshot of 1.0.5 (#175) @simonbasle
  • Bump junit-jupiter-engine from 5.6.0 to 5.7.0 (#141) @dependabot-preview
  • Bump blockhound from 1.0.3.RELEASE to 1.0.4.RELEASE (#131) @dependabot-preview
  • Bump junit-jupiter-api from 5.6.0 to 5.7.0 (#142) @dependabot-preview
  • Bump junit from 4.13 to 4.13.1 (#150) @dependabot-preview
  • Bump byte-buddy from 1.10.12 to 1.10.19 (#162) @dependabot-preview
  • Bump auto-service from 1.0-rc6 to 1.0-rc7 (#122) @dependabot-preview
  • Bump assertj-core from 3.15.0 to 3.18.1 (#158) @dependabot-preview
  • Bump byte-buddy-agent from 1.10.12 to 1.10.19 (#163) @dependabot-preview
BlockHound - 1.0.4.RELEASE

Published by github-actions[bot] over 4 years ago

What's Changed

๐Ÿš€ Features / Enhancements

  • Whitelist standard streams (System.out/System.err) (#125) @bsideup

๐Ÿ› Bug Fixes

  • Reset installer Thread's state (#124) @bsideup

๐Ÿ“– Documentation

  • fixed syntax in an example code (#111) @62mkv

๐Ÿ“ฆ Dependency updates

  • Bump byte-buddy from 1.10.11 to 1.10.12 (#129) @dependabot-preview
  • Bump byte-buddy-agent from 1.10.11 to 1.10.12 (#130) @dependabot-preview
  • Bump blockhound from 1.0.0.M5 to 1.0.3.RELEASE (#105) @dependabot-preview
  • Bump byte-buddy from 1.10.8 to 1.10.11 (#126) @dependabot-preview
  • Bump byte-buddy-agent from 1.10.8 to 1.10.11 (#127) @dependabot-preview
BlockHound - 1.0.3.RELEASE

Published by release-drafter[bot] over 4 years ago

What's Changed

This release adds Java 14 compatibility.
A smoke test is added to ensure that Java 13+ environment is properly configured (see #33).

๐Ÿš€ Features / Enhancements

  • Perform a smoke test after instrumenting the classes. (#104) @bsideup

๐Ÿ“– Documentation

  • Add maven installation instructions. (#79) @daggerok
  • Improve example of custom blockingMethodCallback (#81) @lhotari

๐Ÿ“ฆ Dependency updates

  • Bump jmh-generator-annprocess from 1.21 to 1.23 (#90) @dependabot-preview
  • Bump assertj-core from 3.12.2 to 3.15.0 (#97) @dependabot-preview
  • Bump rxjava from 2.2.5 to 2.2.18 (#84) @dependabot-preview
  • Bump junit-jupiter-engine from 5.4.0 to 5.6.0 (#86) @dependabot-preview
  • Bump auto-service from 1.0-rc4 to 1.0-rc6 (#87) @dependabot-preview
  • Bump junit from 4.12 to 4.13 (#88) @dependabot-preview
  • Bump byte-buddy from 1.10.1 to 1.10.8 (#93) @dependabot-preview
BlockHound - 1.0.2.RELEASE

Published by release-drafter[bot] over 4 years ago

What's Changed

๐Ÿš€ Features / Enhancements

  • Add dynamic predicate support (Kotlin, Scala, others) (#72) @bsideup
  • Add new JDK13 calls, fix tests (#73) @bsideup
  • Hide BlockHound's own frame from the Error (#62) @bsideup
  • Throw specific BlockingOperationError instead of Error (#65) @bhchandra
  • Use newly introduced BlockingOperationError in assertions (#67) @bsideup

๐Ÿ› Bug Fixes

  • Use getInternalName() instead of getName() (#78) @bsideup

๐Ÿงน Housekeeping

  • Clarify RxJava 3+ support (#66) @bsideup
  • Test with JDK13 (#68) @bsideup
BlockHound - 1.0.1.RELEASE

Published by release-drafter[bot] almost 5 years ago

What's Changed

  • Supported libraries section added to readme to resolve #44 (#60) @tarungulati1988

๐Ÿ› Bug Fixes

  • Shading is the gift that keeps on giving (#61) @bsideup
BlockHound - 1.0.0.RELEASE

Published by release-drafter[bot] about 5 years ago

This is a first release of BlockHound ๐ŸŽ‰

Changes since 1.0.0.RC1

๐Ÿ“ƒ Docs

  • Reflect latest changes in the "How it works" docs (#58) @bsideup
  • Javadoc (#52) @bsideup

๐Ÿš€ Features / Enhancements

  • Simplify integrations after RC1 refactorings (#54) @bsideup
  • hide BlockHoundRuntime from public API (#53) @bsideup
    โš ๏ธ note that this is a source (not binary) breaking change (if you were using BlockHoundRuntime class directly), but it was never intended to be used directly, only by instrumentation.

๐Ÿ› Bug Fixes

  • Hide BlockHound's constructor (#55) @bsideup
    โš ๏ธ this is a binary change, but only if you were calling new BlockHound(), which does not make a lot of sense :)
BlockHound - 1.0.0.RC1

Published by release-drafter[bot] about 5 years ago

What's Changed

This this is the first release candidate and it focuses on the performance.

Previous versions were using a native agent (in C++).
But it was problematic due to the complexity of the build plus the performance overhead of the native switch.

This release includes a major rewrite that removes the native code and now only uses the bytecode instrumentation to achieve the same result.

Not only it helped us to reduce the complexity of the project (both build-wise and code-wise, making it easier for potential contributors to submit their changes), but the performance was improved significantly!

Before:

Benchmark                                                 Mode  Cnt  Score   Error  Units
BlockHoundBenchmark.baselineBlockingCallInBlockingThread  avgt    9  0,520 ยฑ 0,028  us/op
BlockHoundBenchmark.measureBlockingCallInBlockingThread   avgt    9  0,853 ยฑ 0,040  us/op
BlockHoundBenchmark.measureAllowedBlockingCall            avgt    9  3,039 ยฑ 0,145  us/op

After:

Benchmark                                                 Mode  Cnt  Score   Error  Units
BlockHoundBenchmark.measureBlockingCallInBlockingThread   avgt    9  0,528 ยฑ 0,025  us/op
BlockHoundBenchmark.measureAllowedBlockingCall            avgt    9  0,538 ยฑ 0,037  us/op

If a blocking call in non-non-blocking thread was previously having an overhead of ~0,320us/op, it is now close to 0,010us/op, which is already a great improvement!

But, there was a case where the implementation detail of BlockHound was adding even more overhead - allowed blocked calls (logging, class loading, etc etc).
And, if before it was ~2,500us/op, it went down to ~0,020us/op ๐ŸŽ‰

๐Ÿš€ Features / Enhancements

  • Replace native agent with ThreadLocal-based API (#46) @bsideup
  • Use ThreadLocal instead of the tags to store the non-blocking marker (#45) @bsideup
  • Add JMH microbenchmarks (#35) @szpak
BlockHound - 1.0.0.M5

Published by release-drafter[bot] about 5 years ago

What's Changed

๐Ÿ› Bug Fixes

  • Remove temp files on exit. Fixes #36 (#41) @bsideup
  • Fix custom blocking methods (#40) @bsideup
BlockHound - 1.0.0.M4

Published by release-drafter[bot] over 5 years ago

What's Changed

๐Ÿš€ Features / Enhancements

  • Whitelist ConcurrentHashMap#initTable (#34) @bsideup
  • Return "is blocking" by default if no frames are matched (#32) @bsideup
  • Declare an Java9 JPMS Automatic-Module-Name for agent and junit (#31) @simonbasle

๐Ÿ“– Documentation

  • Fix link to supported_testing_frameworks.md from quick_start.md (#30) @philsttr
BlockHound - 1.0.0.M3

Published by release-drafter[bot] over 5 years ago

What's Changed

  • Change the top-level package to reactor.blockhound. (#28) @bsideup
  • Azure pipelines (#22) @bsideup

๐Ÿš€ Features / Enhancements

  • release memory allocated by JVMTI/JNI. (#27) @bsideup
  • Skip ReactorIntegration on Reactor 3.3.x since it got a built-in one (#29) @bsideup

๐Ÿ“– Documentation

  • Improve wording in Testing Framwork Support (#20) @sbrannen
  • Improve wording in overview page (#19) @sbrannen
  • Add a section to the docs about the testing frameworks (#18) @bsideup
BlockHound - 1.0.0.M2

Published by release-drafter[bot] over 5 years ago

What's Changed

  • Replace javassist instrumentation with ASM (#12) @bsideup

๐Ÿš€ Features / Enhancements

  • Integrate with JUnit Platform (#13) @bsideup

    โš ๏ธ Gradle users are advised to add testCompile 'org.junit.platform:junit-platform-launcher' due to a bug in Gradle

  • Statically link Windows mingw binaries (#16, #17) @jrehwaldt

๐Ÿ› Bug Fixes

  • Fixes the Windows binary name (#16) @jrehwaldt
BlockHound - 1.0.0.M1

Published by bsideup over 5 years ago