问题标签 [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.
java - Blockhound Gradle:'您需要添加 '-XX:+AllowRedefinitionToAddDeleteMethods' JVM 标志。
我试图在测试期间在我的 Spring Boot 应用程序中运行 Blockhound。不幸的是,gradle 没有选择所需的-XX:+AllowRedefinitionToAddDeleteMethods
标志。我在 Run Configurations 和 gradle.properties 中使用 IntelliJ 的 VMoptions 进行了尝试org.gradle.jvmargs=-XX:+AllowRedefinitionToAddDeleteMethods
。错误仍然存在。
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 调用)时,如果工作正常。
我在这里想念什么?
spring-webflux - Blockhound 没有检测到直接的阻塞代码
使用 spring boot webflux,我正在尝试 Blockhound 进行一个非常简单的阻塞调用,但它似乎没有检测到它。
在主要方法中:
我的阻塞端点:
任何想法?
编辑:
当我在端点中使用 UUID.randomUUID() 时,我收到与 randomUUID() 使用的阻塞 FileInputStream#readBytes 相关的错误。所以我想我的安装很好
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 没有检测到任何阻塞调用,并且我的所有测试都通过了。
这是堆栈跟踪:
reactor - AutoService 无法注册 BlockHoundIntegration
我正在尝试将 BlockHound ( https://github.com/reactor/BlockHound ) 集成到我的项目中。使用 SecureRandom 时,我需要一个自定义配置来跳过阻塞。我尝试了以下设置。在我的测试资源中,我有一门课:
在我的 build.gradle 文件中我添加了:
我遇到的问题是我的自定义 BlockHoundSecureRandom 未注册。AutoService 注释和注释处理器应该在 META-INF/services 下创建具有服务注册的文件。但是,没有生成任何内容并且测试失败。当我手动创建服务注册时,一切都按预期工作。知道缺少什么以便 AutoService 可以注册我的服务吗?
编辑:我启用了调试模式并看到文件已生成但位置错误:
构建/类/java/test/...
对于 gradle 项目,它应该位于:
构建/资源/测试/...
java - 支持黄瓜和协程的猎犬吗?
我在使用 cucumber 和 kotlin croutine 时遇到了一些麻烦。
当我在 runBlock 范围内安装 blockhound 并运行 sleep 方法时,什么也没发生。
我的环境是
- 弹簧启动 2.5.5
- 爪哇 11
- 科特林 1.5.31
- 黄瓜,黄瓜 junit 平台引擎 7.0.0
如何在我的测试方法中运行 blockhound?谢谢你。:)
reactive-programming - 即使使用显式调度程序也会发生 Blockhound 异常
我有一个类似的代码片段来调度单独线程池上的 I/O,但不幸的是,我们确实需要它的响应来决定是否继续进行。
我已经在本地启用了 blockhound,这在大多数情况下似乎都可以正常工作。但是当我进行负载和性能测试时,我确实看到了大约 10 次 blockhound 异常,我错过了什么吗?在 spring reactor 3.4 版中是否有更好的阻塞方法?
更新:
堆栈跟踪:
java - java.io.RandomAccessFile.readBytes 阻塞调用在反应式应用程序中是否可以接受?在哪些情况下?
我们有一个使用 Spring WebFlux 的应用程序,它使用 Project Reactor。我为应用程序运行了 BlockHound 评估,它报告了 java.io.RandomAccessFile.readBytes 在诸如 hibernate-validator、orika 映射器之类的库中阻塞调用。hibernate-validator 从其 ValidationMessages.properties 文件中读取错误消息。这个阻塞调用(只是从属性文件中读取消息)对响应式应用程序的负面影响有多严重?是否可以忽略它,或者我们是否应该为此验证找到非阻塞解决方案?
java - 带有 Blockhound && CloseableHttpClient 的不支持的 java 版本 61 | -AllowRedefinitionToAddDeleteMethods
在应用程序开始时,我发现了三个警告:
但它唯一的警告。不幸的是,我也遇到了错误:
在项目中,我使用 Azure KeyVault 和 BlockHound 与之通信。
应用程序.java
我在 IntelliJ 的 VM 选项中添加了-XX:+AllowRedefinitionToAddDeleteMethods 。我也将它添加到gradle.build文件中,但它似乎无法正常工作。
构建.gradle
码头工人入口点:
我正在使用:Java 17.0.2和gradle 7.3
我已经尝试将spring.profiles.active更改为native、local等。我还将项目从Java 16迁移到17,从gradle 7.1迁移到7.3,以及其他依赖项。我在2.6.4版本中遇到了springboot的问题,但可能我应该提高云依赖项的版本,但不确定它们如何相互兼容。
该解决方案运行良好,我按预期从KeyVault获取属性。
我想摆脱那些警告,但我现在没有想法。也许有人有类似的情况?