Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

native compilation : quarkus-jdbc-oracle with elasticsearch-java strange behaviour #31624

Closed
xrobert35 opened this issue Mar 6, 2023 · 14 comments · Fixed by #31770
Closed

native compilation : quarkus-jdbc-oracle with elasticsearch-java strange behaviour #31624

xrobert35 opened this issue Mar 6, 2023 · 14 comments · Fixed by #31770
Assignees
Labels
area/elasticsearch env/windows Impacts Windows machines kind/bug Something isn't working
Milestone

Comments

@xrobert35
Copy link

Describe the bug

Hello,

I'm trying to compile in native mode my project using

  • quay.io/quarkus/ubi-quarkus-graalvmce-builder-image:22.3-java17 as nativeBuilder
  • quarkus 2.16.3.Final
  • quarkus-jdbc-oracle
  • quarkus-elasticsearch-rest-client
  • elasticsearch-java

But it fail.

I can't figure out the problem. I've tried to add --initialize-at-run-time args but it doesn't change anything.

I'm already using elasticsearch-java in native mode (8.1.2 not 8.6.2) with some initialize-at-run-time and register for reflection it works but the problem seem to come from the jdbc-oracle.

Expected behavior

Compilation without error or at least not the oracle-jdbc one.

Actual behavior

With the actual configuration I get this error :

#15 766.0 Error: Classes that should be initialized at run time got initialized during image building:
#15 766.0  oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'BlockSource$ThreadedCachingBlockSource$BlockReleaser.class'). oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource caused initialization of this class with the following trace:

More detail stack on the project readme : https://github.com/xrobert35/quarkus-oracle-jdbc-error-example/blob/master/README.md

How to Reproduce?

I've made a simplified project to reproduce

Step 1.

https://github.com/xrobert35/quarkus-oracle-jdbc-error-example
docker build -t <name> . --no-cache

Output of uname -a or ver

docker windows or WSL docker

Output of java -version

Java Version 17.0.6+10-jvmci-22.3-b13

GraalVM version (if different from Java)

22.3

Quarkus version or git rev

2.16.3.Final

Build tool (ie. output of mvnw --version or gradlew --version)

Docker

Additional information

Some strange behaviour

  • If you remove the use of ElasticsearchClient (including the import) in TestService the compilation will work. (So I suppose the real problem could be the creation of the ElasticsearchClient (in the TestOracleJDBCConfig file), but :
  • If you change quarkus-jdbc-oracle to quarkus-jdbc-postgresql and change to db-king to postgresql and I let the ElasticsearchClient the compilation will work
@xrobert35 xrobert35 added the kind/bug Something isn't working label Mar 6, 2023
@quarkus-bot quarkus-bot bot added area/elasticsearch env/windows Impacts Windows machines labels Mar 6, 2023
@quarkus-bot
Copy link

quarkus-bot bot commented Mar 6, 2023

/cc @gsmet (elasticsearch), @loicmathieu (elasticsearch), @yrodiere (elasticsearch)

@loicmathieu
Copy link
Contributor

loicmathieu commented Mar 6, 2023

Hi,

elasticsearch-java is not compatible with Quarkus 2.16 as it uses the new Jakarta EE packages.
You need to wait for Quarkus 3 that will switch to more recent version of Jakarata EE and also will provide an extension for the Elasticsearch Java Client (see #2262).

@gsmet
Copy link
Member

gsmet commented Mar 6, 2023

Note that you can already test Quarkus 3.0.0.Alpha4, which should be fairly stable.

@gsmet
Copy link
Member

gsmet commented Mar 6, 2023

And... in fact, I would be interested if you could do it and use the new Elasticsearch Java client and check if your problem still happens.

@xrobert35
Copy link
Author

xrobert35 commented Mar 6, 2023

Ok i'm trying to move to 3.0.0.Alpha4 now.

Also the conclusion seem a bit "fast", why compilation work with quarkus-jdbc-postgresql but not with quarkus-jdbc-oracle ?
Futhermore i've projet running in native quarkus 2.10.1 and elasticsearch java 8.1.2 (which include jakarta also) without problem.

@xrobert35
Copy link
Author

xrobert35 commented Mar 6, 2023

Same problem using 3.0.0.Alpha4 with quarkus-jdbc-oracle
Compilation success with quarkus-jdbc-postgresql

i've made a branch with the 3.0.0-Alpha4 : https://github.com/xrobert35/quarkus-oracle-jdbc-error-example/tree/chore/3.0.0-Alpha

@gsmet
Copy link
Member

gsmet commented Mar 6, 2023

Yeah, that was my intuition that you would have the same issue.

@gsmet gsmet reopened this Mar 6, 2023
@gsmet
Copy link
Member

gsmet commented Mar 6, 2023

So you haven't used the Quarkus extension, could you please apply this patch to your reproducer?

diff --git a/pom.xml b/pom.xml
index 6e19606..b3ca1da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,12 +52,7 @@
         </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-elasticsearch-rest-client</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>co.elastic.clients</groupId>
-            <artifactId>elasticsearch-java</artifactId>
-            <version>8.6.2</version>
+            <artifactId>quarkus-elasticsearch-java-client</artifactId>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
diff --git a/src/main/java/org/test/jdbcoracle/config/TestOracleJDBCConfig.java b/src/main/java/org/test/jdbcoracle/config/TestOracleJDBCConfig.java
index ced93be..ed3189e 100644
--- a/src/main/java/org/test/jdbcoracle/config/TestOracleJDBCConfig.java
+++ b/src/main/java/org/test/jdbcoracle/config/TestOracleJDBCConfig.java
@@ -31,12 +31,6 @@ public class TestOracleJDBCConfig {
     @Inject
     ObjectMapper mapper;
 
-    @Singleton
-    public ElasticsearchClient initClient(RestClient client){
-        ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper(mapper));
-        return new ElasticsearchClient(transport);
-    }
-
     void onStart(@Observes StartupEvent ev) {         
         this.repository.findAll();
         new ElasticsearchClient(null);
@@ -47,4 +41,4 @@ public class TestOracleJDBCConfig {
         }
     }
 
-}
\ No newline at end of file
+}

That doesn't solve your problem though.
My guess is that having Elasticsearch Java Client + the Oracle client somehow triggers an incompatibility issue.

FWIW, the error we have is:

Warning: Feature class oracle.nativeimage.NativeImageFeature is annotated with the deprecated annotation @AutomaticFeature. Support for this annotation will be removed in a future version of GraalVM. Applications should register a feature using the option --features=oracle.nativeimage.NativeImageFeature
[1/7] Initializing...                                                                                   (13.3s @ 0.65GB)
 Version info: 'GraalVM 22.3.0 Java 17 CE'
 Java version info: '17.0.5+8-jvmci-22.3-b08'
 C compiler: gcc (redhat, x86_64, 11.3.1)
 Garbage collector: Serial GC
 10 user-specific feature(s)
 - io.quarkus.caffeine.runtime.graal.CacheConstructorsFeature
 - io.quarkus.hibernate.orm.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.hibernate.Version, org.hibernate.annotations.common.Version, org.hibernate.dialect.Dialect] categories
 - io.quarkus.hibernate.validator.runtime.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.hibernate.validator.internal.util.Version] categories
 - io.quarkus.runner.Feature: Auto-generated class by Quarkus from the existing extensions
 - io.quarkus.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.jboss.threads] categories
 - io.quarkus.runtime.graal.ResourcesFeature: Register each line in META-INF/quarkus-native-resources.txt as a resource on Substrate VM
 - oracle.nativeimage.NativeImageFeature
 - org.eclipse.angus.activation.nativeimage.AngusActivationFeature
 - org.hibernate.graalvm.internal.GraalVMStaticFeature: Hibernate ORM's static reflection registrations for GraalVM
 - org.hibernate.graalvm.internal.QueryParsingSupport: Hibernate ORM's support for HQL Parser in GraalVM
The bundle named: com/sun/rowset/RowSetResourceBundle, has not been found. If the bundle is part of a module, verify the bundle name is a fully qualified class name. Otherwise verify the bundle path is accessible in the classpath.
[2/7] Performing analysis...  [*******]                                                                 (48.2s @ 2.28GB)
  19,950 (89.51%) of 22,287 classes reachable
  30,619 (60.71%) of 50,431 fields reachable
  98,198 (53.42%) of 183,836 methods reachable
     732 classes,   402 fields, and 3,299 methods registered for reflection
      70 classes,    91 fields, and    56 methods registered for JNI access
       4 native libraries: dl, pthread, rt, z
[3/7] Building universe...                                                                               (5.5s @ 2.27GB)
[4/7] Parsing methods...      [***]                                                                      (5.4s @ 1.35GB)
[5/7] Inlining methods...     [****]                                                                     (2.7s @ 2.04GB)
[6/7] Compiling methods...    [******]                                                                  (37.2s @ 2.65GB)
[7/7] Creating image...
                                                                                  (0.0s @ 2.42GB)
Error: Classes that should be initialized at run time got initialized during image building:
 oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'BlockSource$ThreadedCachingBlockSource.class'). oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource caused initialization of this class with the following trace: 
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource.<clinit>(BlockSource.java:288)
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaserListener.handleNotification(BlockSource.java:435)
	at sun.management.NotificationEmitterSupport.sendNotification(NotificationEmitterSupport.java:155)
	at sun.management.MemoryImpl.createNotification(MemoryImpl.java:161)
	at sun.management.MemoryPoolImpl$CollectionSensor.triggerAction(MemoryPoolImpl.java:326)
	at sun.management.Sensor.trigger(Sensor.java:134)

oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'BlockSource$ThreadedCachingBlockSource$BlockReleaser.class'). oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource caused initialization of this class with the following trace: 
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser.<clinit>(BlockSource.java:313)
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource.<clinit>(BlockSource.java:454)


com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
 oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'BlockSource$ThreadedCachingBlockSource.class'). oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource caused initialization of this class with the following trace: 
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource.<clinit>(BlockSource.java:288)
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaserListener.handleNotification(BlockSource.java:435)
	at sun.management.NotificationEmitterSupport.sendNotification(NotificationEmitterSupport.java:155)
	at sun.management.MemoryImpl.createNotification(MemoryImpl.java:161)
	at sun.management.MemoryPoolImpl$CollectionSensor.triggerAction(MemoryPoolImpl.java:326)
	at sun.management.Sensor.trigger(Sensor.java:134)

oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser the class was requested to be initialized at run time (from feature io.quarkus.runner.Feature.beforeAnalysis with 'BlockSource$ThreadedCachingBlockSource$BlockReleaser.class'). oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource caused initialization of this class with the following trace: 
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser.<clinit>(BlockSource.java:313)
	at oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource.<clinit>(BlockSource.java:454)


	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:73)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ProvenSafeClassInitializationSupport.checkDelayedInitialization(ProvenSafeClassInitializationSupport.java:273)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.afterImageWrite(ClassInitializationFeature.java:244)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$doRun$8(NativeImageGenerator.java:724)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:85)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:724)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:535)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:403)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:580)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
------------------------------------------------------------------------------------------------------------------------
                       13.6s (9.0% of total time) in 166 GCs | Peak RSS: 4.96GB | CPU load: 6.69
------------------------------------------------------------------------------------------------------------------------

@zakkak does it ring any bell

@yrodiere
Copy link
Member

yrodiere commented Mar 6, 2023

It's possible that the Elasticsearch REST client brings in a dependency that the Oracle JDBC driver depends on optionally, and when the Oracle JDBC driver detects it in the classpath, it behaves differently for some reason. We had that kind of things happen in the past (with XML parsers, I think?).

Determining what the problematic dependency is will require some analysis of what's going on; though. I guess the Oracle JDBC driver is still closed-source, possibly obfuscated?

@xrobert35
Copy link
Author

@gsmet sorry i didn't know about quarkus-elasticsearch-java-client I thought you were speaking about the normal one.
Example up to date. But yes same error

@zakkak
Copy link
Contributor

zakkak commented Mar 7, 2023

@zakkak does it ring any bell

No. It looks like when using quarkus-elasticsearch-java-client, sun.management.Sensor.trigger becomes reachable and that causes the build-time initialization of oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser which we want to be initialized at run time:

runtimeInitialized.produce(new RuntimeInitializedClassBuildItem(
"oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser"));

which for some reason we also register for runtime initialization in:

.produce(new RuntimeInitializedClassBuildItem("oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource"));

My first try would be to register oracle.jdbc.driver.BlockSource$ThreadedCachingBlockSource$BlockReleaser for runtime reinitialization instead of runtime initialization. If this doesn't work I think the next step would be to figure out why/how sun.management.Sensor.trigger is becoming reachable and see whether we can avoid it.

@xrobert35
Copy link
Author

Is there something I can try at my level ? Is there some kind of parameter like --reinitialize-at-run-time ? , can't figure out

@yrodiere
Copy link
Member

yrodiere commented Mar 10, 2023

Is there something I can try at my level ? Is there some kind of parameter like --reinitialize-at-run-time ? , can't figure out

I don't think you can since we also need to remove something in Quarkus.

I'll try to prepare a PR following @zakkak's instructions and will test against your reproducer, but if that doesn't work I'll probably be out of my depth and request help from someone :)

@zakkak
Copy link
Contributor

zakkak commented Mar 13, 2023

FTR I provide a bit more context about why reinitialization fixes this in #31770 (comment)

@gsmet gsmet modified the milestones: 3.0.0.Alpha6, 2.16.5.Final Mar 16, 2023
benkard added a commit to benkard/mulkcms2 that referenced this issue Apr 4, 2023
This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [flow-bin](https://github.com/flowtype/flow-bin) ([changelog](https://github.com/facebook/flow/blob/master/Changelog.md)) | devDependencies | minor | [`^0.201.0` -> `^0.203.0`](https://renovatebot.com/diffs/npm/flow-bin/0.201.0/0.203.1) |
| [com.rometools:rome](http://rometools.com) ([source](https://github.com/rometools/rome)) | compile | minor | `2.0.0` -> `2.1.0` |
| [org.postgresql:postgresql](https://jdbc.postgresql.org) ([source](https://github.com/pgjdbc/pgjdbc)) | build | minor | `42.5.4` -> `42.6.0` |
| [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.34.0` -> `2.35.0` |
| [org.apache.maven.plugins:maven-resources-plugin](https://maven.apache.org/plugins/) | build | patch | `3.3.0` -> `3.3.1` |
| [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | patch | `2.16.4.Final` -> `2.16.6.Final` |
| [io.quarkus:quarkus-universe-bom](https://github.com/quarkusio/quarkus-platform) | import | patch | `2.16.4.Final` -> `2.16.6.Final` |

---

### Release Notes

<details>
<summary>flowtype/flow-bin</summary>

### [`v0.203.1`](flow/flow-bin@0c16b26...5e0645d)

[Compare Source](flow/flow-bin@0c16b26...5e0645d)

### [`v0.203.0`](flow/flow-bin@861f798...0c16b26)

[Compare Source](flow/flow-bin@861f798...0c16b26)

### [`v0.202.1`](flow/flow-bin@2b48bba...861f798)

[Compare Source](flow/flow-bin@2b48bba...861f798)

### [`v0.202.0`](flow/flow-bin@86aea9c...2b48bba)

[Compare Source](flow/flow-bin@86aea9c...2b48bba)

</details>

<details>
<summary>rometools/rome</summary>

### [`v2.1.0`](https://github.com/rometools/rome/releases/tag/2.1.0)

[Compare Source](rometools/rome@2.0.0...2.1.0)

<!-- Release notes generated using configuration in .github/release.yml at 2.1.0 -->

#### What's Changed

##### ⭐ New Features

-   Downgrade Java from version 11 to 8 by [@&#8203;PatrickGotthard](https://github.com/PatrickGotthard) in rometools/rome#642
-   Add support for GraalVM native images by [@&#8203;artembilan](https://github.com/artembilan) in rometools/rome#636

##### 🔨 Dependency Upgrades

-   Bump maven-compiler-plugin from 3.10.1 to 3.11.0 by [@&#8203;dependabot](https://github.com/dependabot) in rometools/rome#635

##### 🧹 Cleanup

-   Remove unused config files by [@&#8203;PatrickGotthard](https://github.com/PatrickGotthard) in rometools/rome#632
-   Polish GitHub workflows by [@&#8203;PatrickGotthard](https://github.com/PatrickGotthard) in rometools/rome#633
-   Polish code by [@&#8203;antoniosanct](https://github.com/antoniosanct) in rometools/rome#631

##### ✔ Other Changes

-   Update configuration for automatically generated release notes by [@&#8203;PatrickGotthard](https://github.com/PatrickGotthard) in rometools/rome#634

#### New Contributors

-   [@&#8203;artembilan](https://github.com/artembilan) made their first contribution in rometools/rome#636

**Full Changelog**: rometools/rome@2.0.0...2.1.0

</details>

<details>
<summary>pgjdbc/pgjdbc</summary>

### [`v42.6.0`](https://github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#&#8203;4260-2023-03-17-153434--0400)

##### Changed

fix: use PhantomReferences instead of `Obejct.finalize()` to track Connection leaks [MR #&#8203;2847](pgjdbc/pgjdbc#2847)

    The change replaces all uses of Object.finalize with PhantomReferences.
    The leaked resources (Connections) are tracked in a helper thread that is active as long as
    there are connections in use. By default, the thread keeps running for 30 seconds after all
    the connections are released. The timeout is set with pgjdbc.config.cleanup.thread.ttl system property.

refactor:(loom) replace the usages of synchronized with ReentrantLock [MR #&#8203;2635](pgjdbc/pgjdbc#2635)
Fixes [Issue #&#8203;1951](pgjdbc/pgjdbc#1951)

</details>

<details>
<summary>diffplug/spotless</summary>

### [`v2.35.0`](https://github.com/diffplug/spotless/blob/HEAD/CHANGES.md#&#8203;2350---2023-02-10)

##### Added

-   CleanThat Java Refactorer. ([#&#8203;1560](diffplug/spotless#1560))
-   Introduce `LazyArgLogger` to allow for lazy evaluation of log messages in slf4j logging. ([#&#8203;1565](diffplug/spotless#1565))

##### Fixed

-   Allow multiple instances of the same npm-based formatter to be used by separating their `node_modules` directories. ([#&#8203;1565](diffplug/spotless#1565))
-   `ktfmt` default style uses correct continuation indent. ([#&#8203;1562](diffplug/spotless#1562))

##### Changes

-   Bump default `ktfmt` version to latest `0.42` -> `0.43` ([#&#8203;1561](diffplug/spotless#1561))
-   Bump default `jackson` version to latest `2.14.1` -> `2.14.2` ([#&#8203;1536](diffplug/spotless#1536))

</details>

<details>
<summary>quarkusio/quarkus</summary>

### [`v2.16.6.Final`](https://github.com/quarkusio/quarkus/releases/tag/2.16.6.Final)

[Compare Source](quarkusio/quarkus@2.16.5.Final...2.16.6.Final)

##### Complete changelog

-   [#&#8203;32319](quarkusio/quarkus#32319) - \[2.16] Revert io.netty.noUnsafe change
-   [#&#8203;32302](quarkusio/quarkus#32302) - Qute - fix validation of expressions with the "cdi" namespace
-   [#&#8203;32253](quarkusio/quarkus#32253) - (2.16) Upgrade to graphql-java 19.4
-   [#&#8203;32223](quarkusio/quarkus#32223) - (2.16) Upgrade wildfly-elytron to 1.20.3.Final
-   [#&#8203;32110](quarkusio/quarkus#32110) - Prevent splitting of cookie header values when using AWS Lambda
-   [#&#8203;32107](quarkusio/quarkus#32107) - Fix Podman detection on Windows
-   [#&#8203;32106](quarkusio/quarkus#32106) - Native building with container: Podman not detected on Windows
-   [#&#8203;32093](quarkusio/quarkus#32093) - Re-use current ApplicationModel for JaCoCo reports when testing Gradle projects
-   [#&#8203;32090](quarkusio/quarkus#32090) - K8s moved its registry
-   [#&#8203;32088](quarkusio/quarkus#32088) - Remove the session cookie if ID token verification failed
-   [#&#8203;32082](quarkusio/quarkus#32082) - Add missing quote in Hibernate Reactive with Panache guide
-   [#&#8203;32079](quarkusio/quarkus#32079) - Quarkus JaCoCo extension fails to start Gradle daemon
-   [#&#8203;32058](quarkusio/quarkus#32058) - Allow use of null in REST Client request body
-   [#&#8203;32047](quarkusio/quarkus#32047) - rest client reactive throws npe on null request body
-   [#&#8203;32041](quarkusio/quarkus#32041) - K8s is moving it's images
-   [#&#8203;32037](quarkusio/quarkus#32037) - Set-Cookie Header is Split when using OIDC together with AWS Lambda
-   [#&#8203;32015](quarkusio/quarkus#32015) - Support repeatable Incomings annotation for reactive messaging
-   [#&#8203;32002](quarkusio/quarkus#32002) - Quarkus: Kafka Event Processor with 2 `@incoming` annotations throws Null Pointer SRMSG00212
-   [#&#8203;31984](quarkusio/quarkus#31984) - Only substitute OctetKeyPair\* classes when on the classpath
-   [#&#8203;31978](quarkusio/quarkus#31978) - Remove quarkus.hibernate-orm.database.generation=drop-and-create from Hibernate ORM codestart
-   [#&#8203;31930](quarkusio/quarkus#31930) - Native build fails for JWT
-   [#&#8203;31893](quarkusio/quarkus#31893) - Docker or Podman required for tests since 3.0.0.Alpha6
-   [#&#8203;31857](quarkusio/quarkus#31857) - Container runtime detection cached in sys prop, container-docker extension
-   [#&#8203;31811](quarkusio/quarkus#31811) - Check the expiry date for inactive OIDC tokens
-   [#&#8203;31717](quarkusio/quarkus#31717) - Quarkus OIDC Session Cookie not deleted in case of 401 unauthorized
-   [#&#8203;31714](quarkusio/quarkus#31714) - OIDC token refresh fails with 401, if user info is used and not available in the cache (anymore)
-   [#&#8203;31662](quarkusio/quarkus#31662) - Warning when docker is not running
-   [#&#8203;31525](quarkusio/quarkus#31525) - Bump Keycloak version to 21.0.1
-   [#&#8203;31490](quarkusio/quarkus#31490) - Enable Podman and Docker Windows quarkus-container-image-docker testing
-   [#&#8203;31307](quarkusio/quarkus#31307) - Native Build on Windows has incorrect resource slashes
-   [#&#8203;30383](quarkusio/quarkus#30383) - Create a new base classloader including parent-first test scoped dependencies when bootstrapping for CT

### [`v2.16.5.Final`](https://github.com/quarkusio/quarkus/releases/tag/2.16.5.Final)

[Compare Source](quarkusio/quarkus@2.16.4.Final...2.16.5.Final)

##### Complete changelog

-   [#&#8203;31959](quarkusio/quarkus#31959) - New home for Narayana LRA coordinator Docker images
-   [#&#8203;31931](quarkusio/quarkus#31931) - Support raw collections in RESTEasy Reactive server and client
-   [#&#8203;31922](quarkusio/quarkus#31922) - Add more lenient Liquibase ZipPathHandler to work around includeAll not working in prod mode
-   [#&#8203;31904](quarkusio/quarkus#31904) - \[2.16] Upgrade SmallRye GraphQL to 1.9.4
-   [#&#8203;31894](quarkusio/quarkus#31894) - Supply missing extension metadata for reactive keycloak client
-   [#&#8203;31891](quarkusio/quarkus#31891) - Fix truststore REST Client config when password is not set
-   [#&#8203;31867](quarkusio/quarkus#31867) - Qute type-safe fragments - fix validation for loop metadata and globals
-   [#&#8203;31866](quarkusio/quarkus#31866) -  The behavior of the `@RestHeader` annotation is different from the `@HeaderParam` annotation when the parameter is of type List
-   [#&#8203;31864](quarkusio/quarkus#31864) - Fix incorrect generic type passed to MessageBodyWriter#writeTo
-   [#&#8203;31818](quarkusio/quarkus#31818) - Jackson JAX-RS YAML Provider for Resteasy Reactive
-   [#&#8203;31804](quarkusio/quarkus#31804) - \[2.16] A test to make sure non-existing modules are ignored during workspace discovery
-   [#&#8203;31793](quarkusio/quarkus#31793) - \[2.16] Fix NPE loading workspace modules
-   [#&#8203;31770](quarkusio/quarkus#31770) - Fix native compilation when using quarkus-jdbc-oracle with elasticsearch-java
-   [#&#8203;31769](quarkusio/quarkus#31769) - Capability added for quarkus-rest-client-reactive-jackson
-   [#&#8203;31756](quarkusio/quarkus#31756) - quarkus-rest-client-reactive-jackson doesn't provide capabilities
-   [#&#8203;31728](quarkusio/quarkus#31728) - Register additional cache implementations for reflection
-   [#&#8203;31718](quarkusio/quarkus#31718) - Properly close metadata file in integration tests
-   [#&#8203;31713](quarkusio/quarkus#31713) - "Too many open files" When test native image.
-   [#&#8203;31712](quarkusio/quarkus#31712) - Make request scoped beans work properly in ReaderInterceptors
-   [#&#8203;31705](quarkusio/quarkus#31705) - Remove all dev services for kubernetes dependencies from kubernetes-client-internal
-   [#&#8203;31692](quarkusio/quarkus#31692) - RequestScoped context not active when using a ReaderInterceptor with large HTTP requests
-   [#&#8203;31688](quarkusio/quarkus#31688) - Suppress config changed warning for quarkus.test.arg-line
-   [#&#8203;31643](quarkusio/quarkus#31643) - Fix iterator issue when executing a zrange with score on a missing key
-   [#&#8203;31626](quarkusio/quarkus#31626) - quarkus.test.arg-line has become a built-time fixed property in 2.16.4
-   [#&#8203;31624](quarkusio/quarkus#31624) - native compilation : quarkus-jdbc-oracle with elasticsearch-java strange behaviour
-   [#&#8203;31617](quarkusio/quarkus#31617) - Bump Stork version 1.4.2
-   [#&#8203;31579](quarkusio/quarkus#31579) - Reinitialize sun.security.pkcs11.P11Util at runtime
-   [#&#8203;31560](quarkusio/quarkus#31560) - Prevent SSE writing from potentially causing accumulation of headers
-   [#&#8203;31559](quarkusio/quarkus#31559) - `SseUtil` unexpectedly stores headers in `Serialisers.EMPTY_MULTI_MAP`
-   [#&#8203;31551](quarkusio/quarkus#31551) - Scheduler - detect scheduled methods of the same name on a class
-   [#&#8203;31547](quarkusio/quarkus#31547) - Scheduler - it's possible to declare two scheduled methods of the same name on the same class
-   [#&#8203;31545](quarkusio/quarkus#31545) - Append System.lineSeparator() to config error messages
-   [#&#8203;31536](quarkusio/quarkus#31536) - Missing newline characters in config error message
-   [#&#8203;31532](quarkusio/quarkus#31532) - Interpret negative/zero body-limit as infinite when logging REST Client request body
-   [#&#8203;31523](quarkusio/quarkus#31523) - Request rejected by CORS for fonts in dev UI when `quarkus.http.cors=true` is set
-   [#&#8203;31496](quarkusio/quarkus#31496) - Filter out RESTEasy related warning in ProviderConfigInjectionWarningsTest
-   [#&#8203;31482](quarkusio/quarkus#31482) - Remove incorrect default value for keepAliveEnabled
-   [#&#8203;31440](quarkusio/quarkus#31440) - Several quarkus integration tests fail to compile to native with latest GraalVM master
-   [#&#8203;31384](quarkusio/quarkus#31384) - Ignore required documentation for `@ConfigMapping` default methods
-   [#&#8203;30757](quarkusio/quarkus#30757) - Allow same origin CORS requests without 3rd party origins being configured
-   [#&#8203;30744](quarkusio/quarkus#30744) - \[Quarkus Native] ClassNotFoundException: com.github.benmanes.caffeine.cache.SSSW
-   [#&#8203;30698](quarkusio/quarkus#30698) - CORS Request same origin ignored if no other origin set

</details>

<details>
<summary>quarkusio/quarkus-platform</summary>

### [`v2.16.6.Final`](quarkusio/quarkus-platform@2.16.5.Final...2.16.6.Final)

[Compare Source](quarkusio/quarkus-platform@2.16.5.Final...2.16.6.Final)

### [`v2.16.5.Final`](quarkusio/quarkus-platform@2.16.4.Final...2.16.5.Final)

[Compare Source](quarkusio/quarkus-platform@2.16.4.Final...2.16.5.Final)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/elasticsearch env/windows Impacts Windows machines kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants