1

Java17 中存在与 CompletableFuture Instrumentation 相关的问题。为了使我的应用程序运行,我已禁用它。我在 newrelic.yml 中添加了以下几行:

 class_transformer:
    com.newrelic.instrumentation.java.completable-future-jdk8u40:
      enabled: false

似乎在 New relic 上什么都没有改变。由于我的无知,我不知道这到底意味着什么。

当我们在生产中部署我们的应用程序时,我是否会冒着遇到问题的风险?

4

1 回答 1

0

该检测模块将 CompletableFuture 的执行链接到原始请求。

New Relic 代理所做的大部分工作都与启动请求的线程相关联,当该线程启动另一个线程时,它们必须被链接。

禁用该模块将阻止此链接,并且由于 Future 的执行未链接到 New Relic 事务,因此不会跟踪其中的任何内容。这意味着现有事务将不包含该 CompletableFuture 的执行。那里发生的错误不会被报告....

为了保持可见性,您需要使用异步 API 添加自定义检测。

基本上,您必须将 New Relic API 作为依赖项添加到您的项目中。

然后在主线程中创建一个 Token 并在另一个线程上使用它来链接它们。

回购中有一张关于这个错误的

于 2021-11-29T23:18:12.970 回答