1.8. 已知问题


查看以下已知问题以了解红帽构建的 Quarkus 3.20 限制和临时解决方案。

在 Red Hat build of Quarkus 3.20 中,进行了测试,以评估 Quarkus 应用程序在启用了 FIPS (Federal Information Processing Standards)模式的环境中的行为。

测试通常成功完成时,一些技术集成和原生镜像配置目前存在阻止验证或编译的限制。

在启用了 FIPS 的环境中测试显示几个关键组件的成功结果,包括 OpenID Connect (OIDC)、支持的数据库、缓存、在非原生模式和 OpenTelemetry 中与 Kafka 的消息。但是,目前无法在这些环境中验证一些技术集成和原生配置。

这些发现结果并不表示红帽构建的 Quarkus 或其组件对 FIPS 的官方支持。

无法验证的场景

以下技术集成或配置目前在启用了 FIPS 的环境中无法验证:

  • MariaDB 11.x
  • 在 JVM 和原生模式下使用 Mandrel 23.0 和 23.1 的 Infinispan 客户端扩展
  • 在原生模式中使用 SCRAM 和 OAUTHBEARER SASL 机制的 Apache Kafka
  • 原生模式中的 JDBC MSSQL 驱动程序
  • DB2
  • 原生模式的 reactive MSSQL 客户端
  • 使用 Red Hat Mandrel 23.1 构建器镜像的原生镜像编译

重要的相关问题

以下公共 JIRA 票据提供了遇到的限制的更多详情:

  • QUARKUS-5984 :由于兼容性问题,MariaDB 11.x 无法在启用了 FIPS 的环境中连接。
  • QUARKUS-2036: Infinispan 客户端扩展缺少对启用了 FIPS 的环境的支持。
  • QUARKUS-2984 :使用 JDBC MSSQL 和 Reactive MSSQL 客户端的本地构建在启用了 FIPS 的 RHEL 8 上会失败。
  • QUARKUS-5232: SASL SCRAM 机制在启用了 FIPS 的环境中的原生模式下不可用。
  • QUARKUS-5233: SASL OAUTHBEARER 机制在启用了 FIPS 的环境中的原生模式下不可用。
  • MANDREL-254: Mandrel 23.1 构建器镜像需要重新工作以支持启用了 FIPS 的环境。
  • QUARKUS-4387: Quarkus Reactive MySQL 客户端在启用了 FIPS 的环境中不被支持。
  • QUARKUS-4612 :在带有原生 Mandrel 23.0 和 23.1 的 FIPS 上 Infinispan 客户端扩展会失败。

临时解决方案

当前还没有可用的临时解决方案。

此发行注记旨在在更广泛的兼容性测试时抢占披露已知挑战。

由于缺少原生库 librocksdbjni-win64.dll,在 Microsoft 上使用 quarkus-kafka-streams 扩展的应用程序会在运行时会失败。

在启动过程中,这个问题会抛出以下错误:

java.lang.RuntimeException: librocksdbjni-win64.dll was not found inside JAR
Copy to Clipboard Toggle word wrap

这个错误可防止初始化 RocksDB 组件,这是 Kafka Streams 应用程序所需的。

目前还没有可用的临时解决方案。

错误示例

13:07:08,118 INFO  [app] ERROR: Failed to start application (with profile [prod])
13:07:08,118 INFO  [app] java.lang.RuntimeException: Failed to start quarkus
13:07:08,118 INFO  [app] 	at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Application.start(Application.java:101)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
13:07:08,118 INFO  [app] 	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
13:07:08,118 INFO  [app] Caused by: java.lang.ExceptionInInitializerError
13:07:08,118 INFO  [app] 	at io.quarkus.kafka.streams.runtime.KafkaStreamsRecorder.loadRocksDb(KafkaStreamsRecorder.java:14)
13:07:08,118 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy_0(Unknown Source)
13:07:08,118 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy(Unknown Source)
13:07:08,118 INFO  [app] 	... 11 more
13:07:08,118 INFO  [app] Caused by: java.lang.RuntimeException: librocksdbjni-win64.dll was not found inside JAR.
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJarToTemp(NativeLibraryLoader.java:118)
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:102)
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:82)
13:07:08,118 INFO  [app] 	at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:70)
13:07:08,118 INFO  [app] 	at org.rocksdb.RocksDB.<clinit>(RocksDB.java:39)
13:07:08,118 INFO  [app] 	... 14 more
Copy to Clipboard Toggle word wrap

如需更多信息,请参阅 QUARKUS-3434

1.8.3. 在 Windows 上缺少 Snappy 的原生库

在 Red Hat build of Quarkus 3.20 中,在 Windows 上运行使用 Snappy 压缩库的应用程序会因为缺少原生库而产生错误。

当尝试压缩 Windows 环境中带有 Snappy 的数据时,用户可能会遇到类似以下示例的错误消息。

错误信息示例

...
org.eclipse.microprofile.reactive.messaging.Message$5@1e8dc267 from channel 'test' was not sent to Kafka topic 'test' - nacking message: org.apache.kafka.common.KafkaException: org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Windows and os.arch=x86_64
...
Copy to Clipboard Toggle word wrap

临时解决方案:目前还没有可用的临时解决方案。计划在以后的发行版本中解决这个问题。

如需更多信息,请参阅 QUARKUS-5983

在 Red Hat build of Quarkus 3.20 中,使用 Mandrel 23.1 运行时构建原生镜像可能会因为堆快照验证错误而失败。

构建过程失败并显示一个错误,表示类型没有标记为 reachable :

AnalysisType<... reachable: false>
Copy to Clipboard Toggle word wrap

这些错误不一致,并可能在不同应用程序中发生。在受控的环境中,它们尚未可靠复制。

错误 1 示例

com.oracle.graal.pointsto.util.AnalysisError: The heap snapshot verifier discovered a type not marked as reachable:
AnalysisType<VMOption$Origin[] -> HotSpotType<[Lcom/sun/management/VMOption$Origin;, resolved>, allocated: false, inHeap: false, reachable: false>
	at com.oracle.graal.pointsto.heap.HeapSnapshotVerifier$ScanningObserver.ensureTypeScanned(HeapSnapshotVerifier.java:332)
	...
Copy to Clipboard Toggle word wrap

错误 2 示例

AnalysisType<MemoryType[] -> HotSpotType<[Ljava/lang/management/MemoryType;, resolved>, allocated: false, inHeap: false, reachable: false>
AnalysisType<HotSpotDiagnosticMXBean$ThreadDumpFormat[] -> HotSpotType<[Lcom/sun/management/HotSpotDiagnosticMXBean$ThreadDumpFormat;, resolved>, allocated: false, inHeap: false, reachable: false>
Copy to Clipboard Toggle word wrap

错误 3 示例

AnalysisType<MemoryType[] -> HotSpotType<[Ljava/lang/management/MemoryType;, resolved>, allocated: false, inHeap: false, reachable: false>
Copy to Clipboard Toggle word wrap

临时解决方案:重试原生镜像构建。由于问题是间歇性的,因此构建可能会在后续尝试时成功。

计划在以后的发行版本中解决这个问题。

如需更多信息,请参阅 MANDREL-332

在 Red Hat build of Quarkus 3.20 中,如果 application.properties 文件中设置了以下属性,则使用 quarkus-opentelemetry 扩展的应用程序不会在 Dev 模式中重启:

  • quarkus.otel.traces.enabled=false
  • quarkus.otel.metrics.enabled=true

在重新载入尝试过程中,Quarkus 会抛出 UnsatisfiedResolutionException

错误信息示例

jakarta.enterprise.inject.UnsatisfiedResolutionException: No bean found for required type [class io.quarkus.opentelemetry.runtime.tracing.DelayedAttributes] and qualifiers [[@jakarta.enterprise.inject.Any()]]
Copy to Clipboard Toggle word wrap

临时解决方案

目前还没有可用的临时解决方案。计划在以后的发行版本中解决这个问题。

1.8.6. Quarkus CLI 无法发现 TLS registry CLI 插件

红帽构建的 Quarkus 3.15 引入了 quarkus-tls-registry-cli 插件,该插件为 Quarkus CLI 启用 TLS registry 支持。

但是,开发工具目前不会发现托管在 maven.repository.redhat.com 上的 Quarkus CLI 插件。因此,Quarkus CLI 无法默认解析 TLS registry CLI 插件。

当出现这个问题时,CLI 会返回类似以下输出的错误:

[jbang] [ERROR] Could not resolve dependencies: The following artifacts could not be resolved: io.quarkus:quarkus-tls-registry-cli:jar:3.20.2.SP1-redhat-00003 (absent): Could not find artifact io.quarkus:quarkus-tls-registry-cli:jar:3.20.2.SP1-redhat-00003 in central (https://repo1.maven.org/maven2/)
Copy to Clipboard Toggle word wrap

临时解决方案: 要启用 Quarkus CLI 解析插件,请将 JBang 配置为使用位于 https://maven.repository.redhat.com/ga/ 的 Red Hat Maven 存储库。

您可以使用以下方法之一:

  • 使用以下内容创建 jbang.properties 文件:

    run.repos=central,https://maven.repository.redhat.com/ga/
    Copy to Clipboard Toggle word wrap

    要在本地应用此配置,请将该文件放在项目的根目录中。要全局应用配置,请将该文件放在 ~/.jbang 目录中。

  • 如果已安装 JBang,请运行以下命令在全局范围内配置存储库:

    jbang config set run.repos central,https://maven.repository.redhat.com/ga/
    Copy to Clipboard Toggle word wrap

如需更多信息,请参阅 QUARKUS-5183

在 Red Hat build of Quarkus 3.20 中,运行 update 命令只更新红帽构建的 Quarkus 平台 com.redhat.quarkus.platform 中包含的 BOM。如果版本的一部分、quarkus-qpid-jms-bomquarkus-operator-sdk-bom,则可以包括 quarkus-camel-bom 和 quarkus-camel-bom 和 quarkus-cxf-bom

但是,该命令不会更新与上游社区版本关联的 BOM 版本。如果您的项目同时包含红帽构建的 Quarkus 和上游 BOM,则此问题可能会导致 Quarkus 和上游 BOM 组合不兼容。

update 命令示例

$ mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.2.SP1-redhat-00003:update -Dmaven.repo.local=<path-to-local-repo>
Copy to Clipboard Toggle word wrap

有问题的 pom.xml 文件示例

<properties>
    <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
    <quarkus.platform.version>3.20.2.redhat-00004</quarkus.platform.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>${quarkus.platform.artifact-id}</artifactId>
            <version>${quarkus.platform.version}</version>
        </dependency>
        <dependency>
            <groupId>io.quarkus.platform</groupId>
            <artifactId>quarkus-amazon-services-bom</artifactId>
            <version>3.2.12.Final</version> 
1

        </dependency>
    </dependencies>
</dependencyManagement>
Copy to Clipboard Toggle word wrap

1
没有更新版本。

临时解决方案:手动更新版本号。

如需更多信息,请参阅 QUARKUS-5185

在 Red Hat build of Quarkus 3.20 中,使用带有返回 Mutiny 类型的异步 REST 客户端的 Hibernate Reactive 可能会导致当前 Hibernate Reactive 会话或事务丢失。

这是因为在没有复制其父级的初始上下文的新 Vert.x 上下文上调用用户回调。因此,回调可能会因为会话或事务缺失而失败,或者静默失败,而不会刷新对数据库的实体更改。更改也可以刷新到新的事务中,而不是预期的外部事务。

临时解决方案

目前还没有可用的临时解决方案。计划在以后的发行版本中解决这个问题。

在 Red Hat build of Quarkus 3.20 中,使用 quarkus/mandrel-for-jdk-21-rhel8:23.1 红帽构建的 Quarkus Native Builder 镜像在启用了 FIPS 的环境中的原生模式中初始化 RSA 密码会生成 NullPointerException (NPE)错误。

这个问题只在启用了 FIPS 的原生模式下发生,它不会影响禁用 FIPS 的原生模式。在启用了 FIPS 的 Red Hat build 时,它也不会影响 JVM 模式。

注意

启用 FIPS 的环境中不支持原生模式。

错误信息示例

2024-10-17 10:45:01,931 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /repro failed, error id: 9b1f5dbb-058b-4c9b-9377-f3acc0a6cba5-1: java.lang.RuntimeException: java.lang.NullPointerException
    at org.acme.ReproResource.init(ReproResource.java:38)
...
Copy to Clipboard Toggle word wrap

临时解决方案:

  1. 如果存在,从 application.properties 文件中删除以下属性:

    quarkus.security.security-providers=SunPKCS11
    Copy to Clipboard Toggle word wrap
  2. application.properties 文件中添加以下属性,以在运行时初始化 ReproResource 类:

    quarkus.native.additional-build-args=--initialize-at-run-time=org.acme.ReproResource
    Copy to Clipboard Toggle word wrap

如需更多信息,请参阅 MANDREL-245

在带有 websocket-next 扩展的 Quarkus 3.20 中,当 @WebSocket 端点在 @OnOpen 生命周期方法中抛出异常时,以下指标不会递增:

  • quarkus_websockets_server_connections_opened_errors_total{uri=${ENDPOINT}}
  • quarkus_websockets_client_connections_opened_errors_total{uri=${ENDPOINT}}

这个行为会影响服务器端和客户端 WebSocket 连接指标。

临时解决方案:目前还没有可用的临时解决方案。计划在以后的发行版本中解决这个问题。

如需更多信息,请参阅 QUARKUS-5977

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat