问题标签 [blockhound]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
312 浏览

java - Blockhound Gradle:'您需要添加 '-XX:+AllowRedefinitionToAddDeleteMethods' JVM 标志。

我试图在测试期间在我的 Spring Boot 应用程序中运行 Blockhound。不幸的是,gradle 没有选择所需的-XX:+AllowRedefinitionToAddDeleteMethods标志。我在 Run Configurations 和 gradle.properties 中使用 IntelliJ 的 VMoptions 进行了尝试org.gradle.jvmargs=-XX:+AllowRedefinitionToAddDeleteMethods。错误仍然存​​在。

0 投票
1 回答
391 浏览

spring - 使用 Thymeleaf 的 Spring Webflux 中的 Blockhound 异常

在我的 Spring Boot 应用程序中启用 Blockhound 进行生产时,每当我尝试处理从 thymeleaf 返回视图的请求时,blockhound 都会引发异常(可能是由于从磁盘读取模板文件时出现阻塞):

例外:

应用程序.java

pom.xml 依赖项

我还尝试了另一种配置:删除 spring boot thymeleaf 自动配置并自己声明 webflux 反应式 thymeleaf 视图解析器,但如果也不起作用:

pom.xml 的变化:

ViewConfiguration.java

我认为问题与 thymeleaf 有关,因为当请求不涉及任何 thymeleaf 模板(标准 REST API 调用)时,如果工作正常。

我在这里想念什么?

0 投票
1 回答
134 浏览

spring-webflux - Blockhound 没有检测到直接的阻塞代码

使用 spring boot webflux,我正在尝试 Blockhound 进行一个非常简单的阻塞调用,但它似乎没有检测到它。

在主要方法中:

我的阻塞端点:

任何想法?

编辑:

当我在端点中使用 UUID.randomUUID() 时,我收到与 randomUUID() 使用的阻塞 FileInputStream#readBytes 相关的错误。所以我想我的安装很好

0 投票
0 回答
382 浏览

java - 如何避免在 Spring Webflux MessageSource 加载包中阻塞调用

我有一个使用 Spring Webflux 和以下内容的 Spring Boot 应用程序(Spring Boot 版本“2.5.2”)RestControllerAdvice

每当handleWebExchangeBindException在测试期间触发时,Blockhound 都会检测到阻塞调用,从而使它们失败。

难道我做错了什么?我认为 MessageSource 在 Spring Webflux 中使用是安全的,那么为什么它使用阻塞 API?

我还想在 Spring Boot 版本“2.4.3”中添加这一点,Blockhound 没有检测到任何阻塞调用,并且我的所有测试都通过了。

这是堆栈跟踪:

0 投票
0 回答
74 浏览

reactor - AutoService 无法注册 BlockHoundIntegration

我正在尝试将 BlockHound ( https://github.com/reactor/BlockHound ) 集成到我的项目中。使用 SecureRandom 时,我需要一个自定义配置来跳过阻塞。我尝试了以下设置。在我的测试资源中,我有一门课:

在我的 build.gradle 文件中我添加了:

我遇到的问题是我的自定义 BlockHoundSecureRandom 未注册。AutoService 注释和注释处理器应该在 META-INF/services 下创建具有服务注册的文件。但是,没有生成任何内容并且测试失败。当我手动创建服务注册时,一切都按预期工作。知道缺少什么以便 AutoService 可以注册我的服务吗?

编辑:我启用了调试模式并看到文件已生成但位置错误:

构建/类/java/test/...

对于 gradle 项目,它应该位于:

构建/资源/测试/...

0 投票
0 回答
43 浏览

java - 支持黄瓜和协程的猎犬吗?

我在使用 cucumber 和 kotlin croutine 时遇到了一些麻烦。

当我在 runBlock 范围内安装 blockhound 并运行 sleep 方法时,什么也没发生。

我的环境是

  • 弹簧启动 2.5.5
  • 爪哇 11
  • 科特林 1.5.31
  • 黄瓜,黄瓜 junit 平台引擎 7.0.0

如何在我的测试方法中运行 blockhound?谢谢你。:)

0 投票
0 回答
32 浏览

reactive-programming - 即使使用显式调度程序也会发生 Blockhound 异常

我有一个类似的代码片段来调度单独线程池上的 I/O,但不幸的是,我们确实需要它的响应来决定是否继续进行。

我已经在本地启用了 blockhound,这在大多数情况下似乎都可以正常工作。但是当我进行负载和性能测试时,我确实看到了大约 10 次 blockhound 异常,我错过了什么吗?在 spring reactor 3.4 版中是否有更好的阻塞方法?

更新:

堆栈跟踪:

0 投票
1 回答
165 浏览

java - java.io.RandomAccessFile.readBytes 阻塞调用在反应式应用程序中是否可以接受?在哪些情况下?

我们有一个使用 Spring WebFlux 的应用程序,它使用 Project Reactor。我为应用程序运行了 BlockHound 评估,它报告了 java.io.RandomAccessFile.readBytes 在诸如 hibernate-validator、orika 映射器之类的库中阻塞调用。hibernate-validator 从其 ValidationMessages.properties 文件中读取错误消息。这个阻塞调用(只是从属性文件中读取消息)对响应式应用程序的负面影响有多严重?是否可以忽略它,或者我们是否应该为此验证找到非阻塞解决方案?

0 投票
0 回答
14 浏览

java - 带有 Blockhound && CloseableHttpClient 的不支持的 java 版本 61 | -AllowRedefinitionToAddDeleteMethods

在应用程序开始时,我发现了三个警告:

但它唯一的警告。不幸的是,我也遇到了错误:

在项目中,我使用 Azure KeyVault 和 BlockHound 与之通信。

应用程序.java

我在 IntelliJ 的 VM 选项中添加了-XX:+AllowRedefinitionToAddDeleteMethods 。我也将它添加到gradle.build文件中,但它似乎无法正常工作。

构建.gradle

码头工人入口点:

我正在使用:Java 17.0.2gradle 7.3

我已经尝试将spring.profiles.active更改为nativelocal等。我还将项目从Java 16迁移到17,从gradle 7.1迁移到7.3,以及其他依赖项。我在2.6.4版本中遇到了springboot的问题,但可能我应该提高云依赖项的版本,但不确定它们如何相互兼容。

该解决方案运行良好,我按预期从KeyVault获取属性。

我想摆脱那些警告,但我现在没有想法。也许有人有类似的情况?