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

Exceptions with Hibernate Reactive under load #32533

Closed
turing85 opened this issue Apr 11, 2023 · 17 comments · Fixed by #32845
Closed

Exceptions with Hibernate Reactive under load #32533

turing85 opened this issue Apr 11, 2023 · 17 comments · Fixed by #32845
Assignees
Labels
Milestone

Comments

@turing85
Copy link
Contributor

turing85 commented Apr 11, 2023

Describe the bug

When using reactive panache and stressing the application with some tests, the application starts throwing exceptions:

2023-04-11 14:00:24,747 ERROR [org.jbo.res.rea.com.cor.AbstractResteasyReactiveContext] (vert.x-eventloop-thread-6) Request failed: javax.persistence.PersistenceException: org.hibernate.HibernateException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: HR000069: Detected use of the reactive Session from a different Thread than the one which was used to open the reactive Session - this suggests an invalid integration; original thread [27]: 'vert.x-eventloop-thread-6' current Thread [23]: 'vert.x-eventloop-thread-2'
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
	at org.hibernate.reactive.session.impl.ReactiveExceptionConverter.convert(ReactiveExceptionConverter.java:31)
	at org.hibernate.reactive.session.impl.ReactiveSessionImpl.lambda$firePersist$19(ReactiveSessionImpl.java:708)
	at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
	at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757)
	at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:735)
	at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2182)
	at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:144)
	at org.hibernate.reactive.id.impl.BlockingIdentifierGenerator.lambda$generate$1(BlockingIdentifierGenerator.java:94)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.hibernate.reactive.id.impl.BlockingIdentifierGenerator.lambda$generate$0(BlockingIdentifierGenerator.java:87)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
	at io.vertx.core.Future.lambda$toCompletionStage$3(Future.java:384)
	at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
	at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
	at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
	at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
	at io.vertx.sqlclient.impl.QueryResultBuilder.tryComplete(QueryResultBuilder.java:100)
	at io.vertx.sqlclient.impl.QueryResultBuilder.tryComplete(QueryResultBuilder.java:34)
	at io.vertx.core.Promise.complete(Promise.java:66)
	at io.vertx.core.Promise.handle(Promise.java:51)
	at io.vertx.core.Promise.handle(Promise.java:29)
	at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
	at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
	at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
	at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
	at io.vertx.core.impl.future.PromiseImpl.onSuccess(PromiseImpl.java:49)
	at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:41)
	at io.vertx.sqlclient.impl.TransactionImpl.lambda$wrap$0(TransactionImpl.java:72)
	at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
	at io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:54)
	at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:86)
	at io.vertx.core.impl.DuplicatedContext.execute(DuplicatedContext.java:163)
	at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:51)
	at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
	at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
	at io.vertx.core.impl.future.PromiseImpl.onSuccess(PromiseImpl.java:49)
	at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:41)
	at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:23)
	at io.vertx.sqlclient.impl.command.CommandResponse.fire(CommandResponse.java:46)
	at io.vertx.sqlclient.impl.SocketConnectionBase.handleMessage(SocketConnectionBase.java:292)
	at io.vertx.pgclient.impl.PgSocketConnection.handleMessage(PgSocketConnection.java:97)
	at io.vertx.sqlclient.impl.SocketConnectionBase.lambda$init$0(SocketConnectionBase.java:105)
	at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
	at io.vertx.core.impl.ContextBase.emit(ContextBase.java:239)
	at io.vertx.core.net.impl.NetSocketImpl.handleMessage(NetSocketImpl.java:390)
	at io.vertx.core.net.impl.ConnectionBase.read(ConnectionBase.java:157)
	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:153)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
	at io.vertx.pgclient.impl.codec.PgEncoder.lambda$write$0(PgEncoder.java:98)
	at io.vertx.pgclient.impl.codec.PgCommandCodec.handleReadyForQuery(PgCommandCodec.java:139)
	at io.vertx.pgclient.impl.codec.PgDecoder.decodeReadyForQuery(PgDecoder.java:237)
	at io.vertx.pgclient.impl.codec.PgDecoder.channelRead(PgDecoder.java:96)
	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.hibernate.HibernateException: java.util.concurrent.CompletionException: java.lang.IllegalStateException: HR000069: Detected use of the reactive Session from a different Thread than the one which was used to open the reactive Session - this suggests an invalid integration; original thread [27]: 'vert.x-eventloop-thread-6' current Thread [23]: 'vert.x-eventloop-thread-2'
	... 77 more
Caused by: java.util.concurrent.CompletionException: java.lang.IllegalStateException: HR000069: Detected use of the reactive Session from a different Thread than the one which was used to open the reactive Session - this suggests an invalid integration; original thread [27]: 'vert.x-eventloop-thread-6' current Thread [23]: 'vert.x-eventloop-thread-2'
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1194)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
	at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.reactivePerformSaveOrReplicate(AbstractReactiveSaveEventListener.java:252)
	at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.lambda$reactivePerformSave$2(AbstractReactiveSaveEventListener.java:175)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:144)
	at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.reactivePerformSave(AbstractReactiveSaveEventListener.java:175)
	at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.lambda$reactiveSaveWithGeneratedId$0(AbstractReactiveSaveEventListener.java:125)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	... 73 more
Caused by: java.lang.IllegalStateException: HR000069: Detected use of the reactive Session from a different Thread than the one which was used to open the reactive Session - this suggests an invalid integration; original thread [27]: 'vert.x-eventloop-thread-6' current Thread [23]: 'vert.x-eventloop-thread-2'
	at org.hibernate.reactive.common.InternalStateAssertions.assertCurrentThreadMatches(InternalStateAssertions.java:46)
	at org.hibernate.reactive.session.impl.ReactiveSessionImpl.threadCheck(ReactiveSessionImpl.java:158)
	at org.hibernate.reactive.session.impl.ReactiveSessionImpl.getReactiveActionQueue(ReactiveSessionImpl.java:168)
	at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.addInsertAction(AbstractReactiveSaveEventListener.java:343)
	at org.hibernate.reactive.event.impl.AbstractReactiveSaveEventListener.lambda$reactivePerformSaveOrReplicate$4(AbstractReactiveSaveEventListener.java:279)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
	... 83 more

Expected behavior

Application runs without throwing exceptions.

Actual behavior

Application throws exceptions.

How to Reproduce?

  1. Checkout this github.com repository:
    git clone https://github.com/turing85/quarkus-reactive-stress-test.git
    cd quarkus-reactive-stress-test
  2. Deploy dependencies:
    docker-compose --file local-deployment/docker-compose.yml up -d
  3. Build the application, configure JMeter to use one thread:
    ./mvnw --define jmeter.threads=1 clean package
  4. Create the database schema:
    ./mwnw flyway:migrate
  5. Start the application:
    java -jar target/quarkus-app/quarkus-run.jar
  6. In a separate terminal, start the JMeter tests (we will call this terminal the test-terminal, and the terminal running the application the application-terminal):
    ./mvnw jmeter:jmeter
  7. Observe that the tests finish without errors:
    ...
    [INFO] summary =  10000 in 00:00:14 =  712.5/s Avg:     1 Min:     0 Max:   433 Err:     0 (0.00%)
    ...
  8. Switch back to the application-terminal, stop it, and rebuild the application, configure JMeter to use 4 threads, start the application:
    ./mvnw --define jmeter.threads=4 clean package
    java -jar target/quarkus-app/quarkus-run.jar
  9. Back to the test-terminal, re-execute the JMeter tests:
    ./mvnw jmeter:jmeter
  10. Observe that there are errors in the tests:
    ...
    [INFO] summary =  40000 in 00:00:13 = 3034.4/s Avg:     1 Min:     0 Max:   482 Err:   927 (2.32%)
    ...
  11. Find the stack trace mentioned above in the logs of the application-terminal
  12. In the test-terminal, Run the wrk-tests, with 1 thread and 1 connection:
    wrk/run.sh 1 1 30s
  13. Observe that the tests finish without erros:
    ...
    Non-2xx responses: 0 (0.00%)
    ...
  14. Re-run the tests, with 1 thread and 2 connections:
    wrk/run.sh 1 2 30s
  15. Immediately switch back to the application-terminal and observe that, for some time, exceptions are thrown and then, the exceptions stop
  16. When the tests finish, switch back to the test-terminal, observe the (relatively low) error rate:
    ...
    Non-2xx responses: 242 (0.12%)
    ...
  17. Re-run the wrk-tests, with 4 connections:
    wrk/run.sh 1 4 30s
  18. Immediately switch back to the application-terminal, observe that the application prints stack traces constantly
  19. When the tests are finished, switch back to the test-terminal and observe the significantly higher error rate:
    ...
    Non-2xx responses: 6597 (2.46%)
    ...

Output of uname -a or ver

Linux <redacted> 5.15.0-52-generic #58-Ubuntu SMP Thu Oct 13 08:03:55 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Output of java -version

openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment Temurin-17.0.5+8 (build 17.0.5+8)
OpenJDK 64-Bit Server VM Temurin-17.0.5+8 (build 17.0.5+8, mixed mode, sharing)

GraalVM version (if different from Java)

GraalVM Mandrel, Version 22.3.1.0-java17

Quarkus version or git rev

2.16.6.Final
3.0.0.CR2

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

Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /home/marco/.m2/wrapper/dists/apache-maven-3.8.7-bin/678cc9d4/apache-maven-3.8.7
Java version: 17.0.5, vendor: Eclipse Adoptium, runtime: /opt/java/mandrel/22.3.0.1-java17
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-52-generic", arch: "amd64", family: "unix"

Additional information

@turing85 turing85 added the kind/bug Something isn't working label Apr 11, 2023
@quarkus-bot
Copy link

quarkus-bot bot commented Apr 11, 2023

/cc @FroMage (panache), @loicmathieu (panache)

@this-user
Copy link

this-user commented Apr 11, 2023

I have been struggling with the exact same problem for days. Sequential requests work fine, but parallel ones reliably lead to that very error.

I am using Hibernate Reactive in combination with Panache, and I am using the @ReactiveTransactional annotation at my REST endpoint. I have attempted to use both Panache.withSession() as well as a Mutiny SessionFactory at various points in the code and in various combinations to resolve the problem as has been suggested in previous discussions about similar issues, but to no avail. I have also tried adding more @ReactiveTransactional annotations to relevant parts of the code, again with no results.

The only thing that has worked so far is restricting the size of the Vertx I/O pool to one thread.

Interestingly, if I do several sets of parallel requests, the issue only occurs during the first set, and usually on the first or second request. So far, I have not been able to reproduce the issue during subsequent sets of requests (with no restart of the application in between).

Judging from the logs, the issue seems to be that the request chain switches to a different I/O thread at some point, causing the issue. There is no discernible reason why this happens, as everything is purely reactive with no code that should block. I have not been able to determine the exact point at which the switch happens, but it seems to be related to code that invokes Hibernate.

  • Issue happens with both Quarkus 2.16.5 and 2.16.6 final
  • Issue happens with GraalVM CE 22.3.1 / JVM 19.0.2 in JVM mode as well as with the native build

EDIT:

  • Issue happens with Postgres as well as MariaDB, using the respective reactive driver

@turing85
Copy link
Contributor Author

turing85 commented Apr 11, 2023

Also tested with:

  • quarkus, version 3.0.0.CR2 -> same behaviour
  • native compilation (GraalVM Mandrel, version 22.3.1.0-java17) -> same behaviour
  • quarkus, version 3.0.0.CR2 + native compilation (GraalVM Mandrel, version 22.3.1.0-java17) -> same behaviour

I updated the issue accordingly.

@franz1981
Copy link
Contributor

@Sanne

@geoand
Copy link
Contributor

geoand commented Apr 12, 2023

cc @DavideD

@DavideD DavideD self-assigned this Apr 12, 2023
@turing85
Copy link
Contributor Author

turing85 commented Apr 12, 2023

Update: I removed the vertx-reactive:-prefix from the quarkus.datasource.reactive.url, and now there are "only" two or three exceptions per test run when running wrk, right at the beginning of the run. JMeter still behaves the same.

@DavideD
Copy link
Contributor

DavideD commented Apr 12, 2023

Thanks, we can see the error related to the IllegalState.
Still working on it

@this-user
Copy link

Update: I removed the vertx-reactive:-prefix from the quarkus.datasource.reactive.url, and now there are "only" two or three exceptions per test run when running wrk, right at the beginning of the run. JMeter still behaves the same.

That sounds like it's in line with what I have been seeing. Although, in my case, I have been using dev mode with automatically configured dev services for testing.

@Sanne
Copy link
Member

Sanne commented Apr 12, 2023

I've been working on this with @DavideD and our conclusion is that the task is being switched on a different thread by vert.x - which is entirely valid to do as it attempts to load balance different contexts on different threads, but the assertions we introduced in Hibernate Reactive are too strict as they don't deal with this case.

You can experiment with this by disabling the assertions; we had foreseen some level of risk when introducing them so there's a safeguard: set the system property org.hibernate.reactive.common.InternalStateAssertions.ENFORCE=false

My conclusions from this is that I was mistaken in enforcing this assertion as there's some valid scenarious in which the thread switch is legal - at the time we were working to spot mistakes in Quarkus integration in which the thread switch was not intended.

On the other hand, I'm puzzled by the fact that we DID NEVER see this thread switch happen under other load tests (e.g. the Techempower benchmark - we've been runnig that extensively), while it's trivial to reproduce with this one. I'd love to investigate further and figure out why it wasn't being triggered on our other tests.

@turing85
Copy link
Contributor Author

@Sanne Feel free to copy my tests.

@turing85
Copy link
Contributor Author

turing85 commented Apr 12, 2023

@Sanne just implemented the change (setting -Dorg.hibernate.reactive.common.InternalStateAssertions.ENFORCE=false) in my tests. This leads to another problem:

2023-04-12 17:35:12,249 ERROR [org.jbo.res.rea.com.cor.AbstractResteasyReactiveContext] (vert.x-eventloop-thread-1) Request failed: javax.persistence.PersistenceException: org.hibernate.HibernateException: io.vertx.pgclient.PgException: ERROR: duplicate key value violates unique constraint "animals__pk__id" (23505)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
	at org.hibernate.reactive.session.impl.ReactiveExceptionConverter.convert(ReactiveExceptionConverter.java:31)
	at org.hibernate.reactive.session.impl.ReactiveSessionImpl.lambda$doFlush$33(ReactiveSessionImpl.java:938)
	at java.base/java.util.concurrent.CompletableFuture.uniHandle(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(Unknown Source)
	at io.vertx.core.Future.lambda$toCompletionStage$3(Future.java:386)
	at io.vertx.core.impl.future.FutureImpl$3.onFailure(FutureImpl.java:153)
	at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:75)
	at io.vertx.core.impl.future.FutureImpl.tryFail(FutureImpl.java:230)
	at io.vertx.core.impl.future.PromiseImpl.tryFail(PromiseImpl.java:23)
	at io.vertx.sqlclient.impl.QueryResultBuilder.tryFail(QueryResultBuilder.java:116)
	at io.vertx.core.Promise.fail(Promise.java:89)
	at io.vertx.core.Promise.handle(Promise.java:53)
	at io.vertx.core.Promise.handle(Promise.java:29)
	at io.vertx.core.impl.future.FutureImpl$3.onFailure(FutureImpl.java:153)
	at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:75)
	at io.vertx.core.impl.future.FutureImpl.tryFail(FutureImpl.java:230)
	at io.vertx.core.impl.future.PromiseImpl.tryFail(PromiseImpl.java:23)
	at io.vertx.core.impl.future.PromiseImpl.onFailure(PromiseImpl.java:54)
	at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:43)
	at io.vertx.sqlclient.impl.TransactionImpl.lambda$wrap$0(TransactionImpl.java:72)
	at io.vertx.core.impl.future.FutureImpl$3.onFailure(FutureImpl.java:153)
	at io.vertx.core.impl.future.FutureBase.lambda$emitFailure$1(FutureBase.java:69)
	at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:86)
	at io.vertx.core.impl.DuplicatedContext.execute(DuplicatedContext.java:163)
	at io.vertx.core.impl.future.FutureBase.emitFailure(FutureBase.java:66)
	at io.vertx.core.impl.future.FutureImpl.tryFail(FutureImpl.java:230)
	at io.vertx.core.impl.future.PromiseImpl.tryFail(PromiseImpl.java:23)
	at io.vertx.core.impl.future.PromiseImpl.onFailure(PromiseImpl.java:54)
	at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:43)
	at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:23)
	at io.vertx.sqlclient.impl.command.CommandResponse.fire(CommandResponse.java:46)
	at io.vertx.sqlclient.impl.SocketConnectionBase.handleMessage(SocketConnectionBase.java:292)
	at io.vertx.pgclient.impl.PgSocketConnection.handleMessage(PgSocketConnection.java:97)
	at io.vertx.sqlclient.impl.SocketConnectionBase.lambda$init$0(SocketConnectionBase.java:105)
	at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
	at io.vertx.core.impl.ContextBase.emit(ContextBase.java:239)
	at io.vertx.core.net.impl.NetSocketImpl.handleMessage(NetSocketImpl.java:390)
	at io.vertx.core.net.impl.ConnectionBase.read(ConnectionBase.java:157)
	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:153)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
	at io.vertx.pgclient.impl.codec.PgEncoder.lambda$write$0(PgEncoder.java:98)
	at io.vertx.pgclient.impl.codec.PgCommandCodec.handleReadyForQuery(PgCommandCodec.java:139)
	at io.vertx.pgclient.impl.codec.PgDecoder.decodeReadyForQuery(PgDecoder.java:237)
	at io.vertx.pgclient.impl.codec.PgDecoder.channelRead(PgDecoder.java:96)
	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.HibernateException: io.vertx.pgclient.PgException: ERROR: duplicate key value violates unique constraint "animals__pk__id" (23505)
	... 66 more
Caused by: io.vertx.pgclient.PgException: ERROR: duplicate key value violates unique constraint "animals__pk__id" (23505)
	at io.vertx.pgclient.impl.codec.ErrorResponse.toException(ErrorResponse.java:31)
	at io.vertx.pgclient.impl.codec.QueryCommandBaseCodec.handleErrorResponse(QueryCommandBaseCodec.java:57)
	at io.vertx.pgclient.impl.codec.ExtendedQueryCommandCodec.handleErrorResponse(ExtendedQueryCommandCodec.java:90)
	at io.vertx.pgclient.impl.codec.PgDecoder.decodeError(PgDecoder.java:246)
	at io.vertx.pgclient.impl.codec.PgDecoder.decodeMessage(PgDecoder.java:132)
	at io.vertx.pgclient.impl.codec.PgDecoder.channelRead(PgDecoder.java:112)
	... 17 more

This exception keeps appearing. From what I see, the database is set up correctly.

Setup of @Id in class Animal (github.com):

public class Animal extends PanacheEntityBase {
  @Id
  @SequenceGenerator(
      name = "animalSequenceGenerator",
      sequenceName = "animals__seq__id")
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "animalSequenceGenerator")
  @Column(name = "id")
  Long id;
  ...
}

Definition of the corresponding sequence in V2023_04_09__create_tables.sql (github.com):

CREATE SEQUENCE animals__seq__id START WITH 1 INCREMENT BY 50 OWNED BY public.animals.id;

@Sanne
Copy link
Member

Sanne commented Apr 12, 2023

@turing85 that's a much easier one :)
Unfortunately the default definition of sequences in Hibernate ORM 6 is a bit confusing, I haven't double checked but I'm quite sure you're having an issue with this one:

In short, have the sequence start from 51.

For Hibernate ORM we have some flags that help migration; unfortunately they aren't applicable for Hibernate Reactive so extra care is needed. I think asking the ORM to validate the schema should be able to flag this one.

@turing85
Copy link
Contributor Author

@Sanne ... what the...? Isn't this a major breaking change for every system using sequences with allocation sizes?

@turing85
Copy link
Contributor Author

turing85 commented Apr 12, 2023

@Sanne I set the sequence to start at 51 (CREATE SEQUENCE ... START WITH 51 ...), still same error. I also do not believe that I hit this change since I define the sequence in the database, through flyway. Also, the error rate is extremely low. Seems like a concurrency issue to me.

@Sanne
Copy link
Member

Sanne commented Apr 13, 2023

@turing85 I had a better look, you're right the sequence is declared correctly (starting from 51 wasn't necessary) and there's indeed a problem in the ReactiveGeneratorWrapper.
Tracking as hibernate/hibernate-reactive#1587

@Sanne Sanne changed the title Exceptions with reactive panache under load Exceptions with Hibernate Reactive under load Apr 13, 2023
@Sanne
Copy link
Member

Sanne commented Apr 13, 2023

Changed title and labels as Panache seems unrelated

@Sanne
Copy link
Member

Sanne commented Apr 23, 2023

Have now merged a fix in Hibernate Reactive, we'll release it soon and upgrade Quarkus.

@quarkus-bot quarkus-bot bot added this to the 3.1 - main milestone Apr 24, 2023
@gsmet gsmet removed this from the 3.1 - main milestone Apr 25, 2023
@gsmet gsmet added this to the 3.0.1.Final milestone Apr 25, 2023
benkard pushed a commit to benkard/quarkus-googlecloud-jsonlogging that referenced this issue May 10, 2023
…oud-jsonlogging!15)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [io.quarkus:quarkus-extension-processor](https://github.com/quarkusio/quarkus) |  | patch | `3.0.0.Beta1` -> `3.0.2.Final` |
| [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | patch | `3.0.0.Beta1` -> `3.0.2.Final` |
| [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus) | import | patch | `3.0.0.Beta1` -> `3.0.2.Final` |
| [org.apache.maven.plugins:maven-failsafe-plugin](https://maven.apache.org/surefire/) | build | minor | `3.0.0` -> `3.1.0` |
| [org.apache.maven.plugins:maven-surefire-plugin](https://maven.apache.org/surefire/) | build | minor | `3.0.0` -> `3.1.0` |
| [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.35.0` -> `2.36.0` |
| [org.apache.maven.plugins:maven-gpg-plugin](https://maven.apache.org/plugins/) | build | minor | `3.0.1` -> `3.1.0` |
| [org.codehaus.mojo:flatten-maven-plugin](https://www.mojohaus.org/flatten-maven-plugin/) ([source](https://github.com/mojohaus/flatten-maven-plugin)) | build | minor | `1.4.1` -> `1.5.0` |

---

### Release Notes

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

### [`v3.0.2.Final`](https://github.com/quarkusio/quarkus/releases/tag/3.0.2.Final)

[Compare Source](https://github.com/quarkusio/quarkus/compare/3.0.1.Final...3.0.2.Final)

##### Complete changelog

-   [#&#8203;33040](https://github.com/quarkusio/quarkus/pull/33040) - Fix config for Vale linter GitHub Action on MR
-   [#&#8203;33033](https://github.com/quarkusio/quarkus/pull/33033) - Fix minor formatting issue in the update guide
-   [#&#8203;33013](https://github.com/quarkusio/quarkus/pull/33013) - Lowercase enum values to avoid hypen in k8s flavor acronym
-   [#&#8203;33004](https://github.com/quarkusio/quarkus/issues/33004) - Kubernetes Dev Services: k3s flavour name is not properly documented
-   [#&#8203;33002](https://github.com/quarkusio/quarkus/pull/33002) - Bump gizmo from 1.6.0.Final to 1.6.1.Final
-   [#&#8203;32999](https://github.com/quarkusio/quarkus/pull/32999) - Qute - fix a regression introduced in [#&#8203;32653](https://github.com/quarkusio/quarkus/issues/32653) (3.0.1)
-   [#&#8203;32989](https://github.com/quarkusio/quarkus/pull/32989) - Exclude JS files from resource filtering
-   [#&#8203;32978](https://github.com/quarkusio/quarkus/pull/32978) - Fix native compilation when using the kafka-client without netty
-   [#&#8203;32968](https://github.com/quarkusio/quarkus/issues/32968) - Unable to build native binary when using quarkus-kafka-client extension
-   [#&#8203;32959](https://github.com/quarkusio/quarkus/issues/32959) - Minus not working with Integer in qute after upgrading to 3.0.1.Final
-   [#&#8203;32956](https://github.com/quarkusio/quarkus/issues/32956) - Dev UI2 show wrong java version
-   [#&#8203;32949](https://github.com/quarkusio/quarkus/pull/32949) - InjectMock should not create a new contextual instance
-   [#&#8203;32944](https://github.com/quarkusio/quarkus/issues/32944) - Quarkus 3: `@InjectMock` with Producer
-   [#&#8203;32941](https://github.com/quarkusio/quarkus/pull/32941) - Rename server-list to hosts in the Infinispan Dev Services guide
-   [#&#8203;32938](https://github.com/quarkusio/quarkus/pull/32938) - Register class for reflection when returning Multi for JAX-RS Resource
-   [#&#8203;32934](https://github.com/quarkusio/quarkus/pull/32934) - Fix setting service account in Kubernetes/Openshift extensions
-   [#&#8203;32933](https://github.com/quarkusio/quarkus/issues/32933) - Quarkus-3.0.1 - Ignores Kubernetes Service account property
-   [#&#8203;32922](https://github.com/quarkusio/quarkus/pull/32922) - Narayana upgrade (to 6.0.1.Final)
-   [#&#8203;32907](https://github.com/quarkusio/quarkus/pull/32907) - Set minimal Maven version to 3.8.2
-   [#&#8203;32893](https://github.com/quarkusio/quarkus/pull/32893) - Fix issue with KnownPathResource manager in native
-   [#&#8203;32888](https://github.com/quarkusio/quarkus/pull/32888) - Quartz - update the error message when scheduler was not started
-   [#&#8203;32886](https://github.com/quarkusio/quarkus/issues/32886) - RESTEasy Reactive streaming resource methods leads to NoSuchMethodException in native mode
-   [#&#8203;32874](https://github.com/quarkusio/quarkus/pull/32874) - Scheduler Dev UI - always log id of programmatically scheduled jobs
-   [#&#8203;32855](https://github.com/quarkusio/quarkus/pull/32855) - Support for multi tenancy column discriminator
-   [#&#8203;32844](https://github.com/quarkusio/quarkus/pull/32844) - Allow access token verification for Google,Github
-   [#&#8203;32827](https://github.com/quarkusio/quarkus/pull/32827) - Update OIDC Dev code to recognize quarkus.oidc.provider
-   [#&#8203;32826](https://github.com/quarkusio/quarkus/issues/32826) - OidcDevConsoleProcessor does not recognize quarkus.oidc.provider
-   [#&#8203;32781](https://github.com/quarkusio/quarkus/pull/32781) - Bump micrometer-bom from 1.10.5 to 1.10.6
-   [#&#8203;32780](https://github.com/quarkusio/quarkus/pull/32780) - Bump picocli.version from 4.7.1 to 4.7.3
-   [#&#8203;32656](https://github.com/quarkusio/quarkus/pull/32656) - Undertow file servlet listing
-   [#&#8203;32192](https://github.com/quarkusio/quarkus/pull/32192) - Encrypt OIDC session cookie value by default

### [`v3.0.1.Final`](https://github.com/quarkusio/quarkus/releases/tag/3.0.1.Final)

[Compare Source](https://github.com/quarkusio/quarkus/compare/3.0.0.Final...3.0.1.Final)

##### Complete changelog

-   [#&#8203;32879](https://github.com/quarkusio/quarkus/pull/32879) - PLANNER-2861 Upgrate to OptaPlanner 9
-   [#&#8203;32863](https://github.com/quarkusio/quarkus/pull/32863) - Dev UI: Implement the config filter by extension
-   [#&#8203;32861](https://github.com/quarkusio/quarkus/pull/32861) - Make dev-services hot reload
-   [#&#8203;32848](https://github.com/quarkusio/quarkus/pull/32848) - Provide correct generic type and annotations in ParamConverterProvider
-   [#&#8203;32847](https://github.com/quarkusio/quarkus/pull/32847) - Fix a typo in rest-client-multipart.adoc
-   [#&#8203;32846](https://github.com/quarkusio/quarkus/pull/32846) - Fix a typo in mongodb-panache.adoc
-   [#&#8203;32842](https://github.com/quarkusio/quarkus/pull/32842) - Correct a typo in redis-reference.adoc
-   [#&#8203;32841](https://github.com/quarkusio/quarkus/pull/32841) - Add a column before a table column separator `|`
-   [#&#8203;32840](https://github.com/quarkusio/quarkus/pull/32840) - Correct a minor error in qute-reference.adoc
-   [#&#8203;32838](https://github.com/quarkusio/quarkus/pull/32838) - Fix a typo in security-openid-connect-multitenancy.adoc
-   [#&#8203;32837](https://github.com/quarkusio/quarkus/pull/32837) - Disable DEV UI for remote dev mode
-   [#&#8203;32836](https://github.com/quarkusio/quarkus/issues/32836) - Prevent exposing of new DEV UI in remote development mode
-   [#&#8203;32833](https://github.com/quarkusio/quarkus/pull/32833) - Fix OIDC UserInfo to better handle null, array, map
-   [#&#8203;32825](https://github.com/quarkusio/quarkus/pull/32825) - Set correct OIDC Google principal claim
-   [#&#8203;32824](https://github.com/quarkusio/quarkus/issues/32824) - Set correct OIDC Google principal claim name
-   [#&#8203;32817](https://github.com/quarkusio/quarkus/pull/32817) - ArC - new Dev UI - fixes and improvements
-   [#&#8203;32815](https://github.com/quarkusio/quarkus/pull/32815) - Properly pass annotation to Writers when streaming data
-   [#&#8203;32812](https://github.com/quarkusio/quarkus/pull/32812) - Report OTel config unknowns only when fallback properties used
-   [#&#8203;32810](https://github.com/quarkusio/quarkus/pull/32810) - Fix K8 service binding with reactive datasource
-   [#&#8203;32809](https://github.com/quarkusio/quarkus/pull/32809) - Set OIDC `user-info-required` when `UserInfo` is known to be required
-   [#&#8203;32805](https://github.com/quarkusio/quarkus/pull/32805) - ArC - support interception of static methods with repeatable bindings
-   [#&#8203;32804](https://github.com/quarkusio/quarkus/pull/32804) - Remove maven-compiler-plugin from dependabot ignore list
-   [#&#8203;32798](https://github.com/quarkusio/quarkus/pull/32798) - Register Resource Class for reflection when customer Reader or Writer is used
-   [#&#8203;32797](https://github.com/quarkusio/quarkus/pull/32797) - Dev UI remove console.log
-   [#&#8203;32796](https://github.com/quarkusio/quarkus/pull/32796) - Dev UI Fix labels not clearing out
-   [#&#8203;32795](https://github.com/quarkusio/quarkus/pull/32795) - Docs update for Apicurio Registry compatible dependencies
-   [#&#8203;32788](https://github.com/quarkusio/quarkus/pull/32788) - Add note about using Jacoco with a multi-module project
-   [#&#8203;32783](https://github.com/quarkusio/quarkus/pull/32783) - Bump dekorate to 3.5.5
-   [#&#8203;32776](https://github.com/quarkusio/quarkus/pull/32776) - Bump quarkiverse-parent to 13
-   [#&#8203;32771](https://github.com/quarkusio/quarkus/pull/32771) - Prevent NPE for UserInfo String and Boolean properties
-   [#&#8203;32765](https://github.com/quarkusio/quarkus/issues/32765) - RR client: annotations on `@*Param` fields present in `@BeanParam` class unavailable to custom `ParamConverterProvider`
-   [#&#8203;32762](https://github.com/quarkusio/quarkus/pull/32762) - Normalize paths for POM Model providers
-   [#&#8203;32759](https://github.com/quarkusio/quarkus/pull/32759) - Restore the ability to use `@TestReactiveTransaction` on a test class
-   [#&#8203;32757](https://github.com/quarkusio/quarkus/pull/32757) - Also create the default mailer if `@CheckedTemplate` is used
-   [#&#8203;32756](https://github.com/quarkusio/quarkus/pull/32756) - Display JVM CDS logs when debug logging is enabled
-   [#&#8203;32755](https://github.com/quarkusio/quarkus/issues/32755) - \[Quarkus 3.0.0.CR2] \[quarkus-mailer] NullPointerException when sending with MailTemplateInstance
-   [#&#8203;32754](https://github.com/quarkusio/quarkus/pull/32754) - Allow the OPTIONS method for static resources
-   [#&#8203;32753](https://github.com/quarkusio/quarkus/pull/32753) - Update codestarts to use openjdk container images 1.15
-   [#&#8203;32752](https://github.com/quarkusio/quarkus/pull/32752) - Collect META-INF/resources only from the runtime classpath
-   [#&#8203;32751](https://github.com/quarkusio/quarkus/issues/32751) - Codestarts - OpenJDK-Container Image not updated
-   [#&#8203;32750](https://github.com/quarkusio/quarkus/pull/32750) - Fix issue with quarkus.init-and-exit
-   [#&#8203;32749](https://github.com/quarkusio/quarkus/pull/32749) - Dev UI add label and icon to submenu
-   [#&#8203;32748](https://github.com/quarkusio/quarkus/pull/32748) - Dev UI DevService page to use new card component
-   [#&#8203;32744](https://github.com/quarkusio/quarkus/pull/32744) - Dev UI - add logger level to server log
-   [#&#8203;32740](https://github.com/quarkusio/quarkus/pull/32740) - Add missing static import in config interceptor doc
-   [#&#8203;32738](https://github.com/quarkusio/quarkus/pull/32738) - Fix guide oidc trust-store config parameter name
-   [#&#8203;32737](https://github.com/quarkusio/quarkus/pull/32737) - Make it possible to test Google OIDC from DevUI
-   [#&#8203;32733](https://github.com/quarkusio/quarkus/pull/32733) - Fixed Java migrations from different packages
-   [#&#8203;32729](https://github.com/quarkusio/quarkus/issues/32729) - quarkus.init-and-exit no longer works
-   [#&#8203;32724](https://github.com/quarkusio/quarkus/issues/32724) - Undertow: Servlet context path failing with `_static` directory
-   [#&#8203;32717](https://github.com/quarkusio/quarkus/pull/32717) - Get element type without annotations
-   [#&#8203;32715](https://github.com/quarkusio/quarkus/pull/32715) - Throw better exception when REST Client receives invalid JSON
-   [#&#8203;32711](https://github.com/quarkusio/quarkus/pull/32711) - Add service registars and loaders to the list of beans to keep
-   [#&#8203;32710](https://github.com/quarkusio/quarkus/issues/32710) - Rest-client throw a "HTTP 400 Bad Request" instead of "Bad Response From Server"
-   [#&#8203;32708](https://github.com/quarkusio/quarkus/pull/32708) - Dev UI Move info to menu item and format page for known items
-   [#&#8203;32707](https://github.com/quarkusio/quarkus/pull/32707) - Bump yasson from 3.0.2 to 3.0.3
-   [#&#8203;32704](https://github.com/quarkusio/quarkus/pull/32704) - Bump smallrye-mutiny-vertx-core from 3.2.0 to 3.3.0
-   [#&#8203;32697](https://github.com/quarkusio/quarkus/pull/32697) - Fix OpenTelemetryJdbcInstrumentationTest flaky test
-   [#&#8203;32696](https://github.com/quarkusio/quarkus/issues/32696) - Quarkus returns 404 on OPTIONS request for the static resources
-   [#&#8203;32692](https://github.com/quarkusio/quarkus/pull/32692) - Allow ConfigMappings with default visibility
-   [#&#8203;32690](https://github.com/quarkusio/quarkus/issues/32690) - Quarkus dev mode is not working with a certain type of folder tree due to dependency injection
-   [#&#8203;32689](https://github.com/quarkusio/quarkus/pull/32689) - Make mailer beans default beans
-   [#&#8203;32687](https://github.com/quarkusio/quarkus/pull/32687) - Upgrade to Hibernate ORM 6.2.1.Final
-   [#&#8203;32683](https://github.com/quarkusio/quarkus/pull/32683) - Reinitialize BouncyCastle DRBG URLSeededEntropySourceProvider at runtime
-   [#&#8203;32675](https://github.com/quarkusio/quarkus/pull/32675) - Dev UI: allow status to be a list
-   [#&#8203;32673](https://github.com/quarkusio/quarkus/pull/32673) - Dev UI make sure to work on custom http root
-   [#&#8203;32666](https://github.com/quarkusio/quarkus/issues/32666) - Get  java.nio.file.InvalidPathException on Windows  when compile  Quarkus 3.0.0.Final  Spring Cloud Config Client
-   [#&#8203;32654](https://github.com/quarkusio/quarkus/issues/32654) - Flyway migration: JavaMigration doesn't respect location
-   [#&#8203;32653](https://github.com/quarkusio/quarkus/pull/32653) - Qute build steps - refactoring and performance improvements
-   [#&#8203;32651](https://github.com/quarkusio/quarkus/pull/32651) - Ensure the ServiceAccount/Role/ClusterRole resources are created in order
-   [#&#8203;32650](https://github.com/quarkusio/quarkus/issues/32650) - Quarkus 3: Using `@TestReactiveTransaction` at the class level doesn't work
-   [#&#8203;32648](https://github.com/quarkusio/quarkus/pull/32648) - ConcurrentAuthTest: Make sure executor is shut down even after failure
-   [#&#8203;32645](https://github.com/quarkusio/quarkus/pull/32645) - Updates to Infinispan 14.0.8.Final
-   [#&#8203;32644](https://github.com/quarkusio/quarkus/pull/32644) - Support blocking exception mappers in REST Client Reactive
-   [#&#8203;32643](https://github.com/quarkusio/quarkus/issues/32643) - Quarkus doesn't support 2.2.5.Final apicurio-registry-mem anymore and documentation should provide compatibility info
-   [#&#8203;32641](https://github.com/quarkusio/quarkus/pull/32641) - Fixed minor typos in doc content
-   [#&#8203;32640](https://github.com/quarkusio/quarkus/issues/32640) - Openshift application has no access to secrets
-   [#&#8203;32633](https://github.com/quarkusio/quarkus/pull/32633) - Bump microprofile-config-api from 3.0.2 to 3.0.3
-   [#&#8203;32630](https://github.com/quarkusio/quarkus/pull/32630) - Bump mongodb-crypt from 1.7.1 to 1.7.3
-   [#&#8203;32620](https://github.com/quarkusio/quarkus/pull/32620) - Upgrade to Hibernate Reactive 2.0.0.Beta2
-   [#&#8203;32617](https://github.com/quarkusio/quarkus/pull/32617) - UniAsserterInterceptor - improve the javadoc and docs
-   [#&#8203;32614](https://github.com/quarkusio/quarkus/pull/32614) - Implement new DevUI for Reactive REST Client
-   [#&#8203;32613](https://github.com/quarkusio/quarkus/pull/32613) - Add CSS ids to DEV UI continuous testing page to help automated testing
-   [#&#8203;32611](https://github.com/quarkusio/quarkus/pull/32611) - Add new security architecture diagram and process description to Security Architecture content
-   [#&#8203;32610](https://github.com/quarkusio/quarkus/pull/32610) - Qute Dev UI improvements
-   [#&#8203;32605](https://github.com/quarkusio/quarkus/pull/32605) - Support generation of ClusterRoleBinding resources
-   [#&#8203;32602](https://github.com/quarkusio/quarkus/issues/32602) - Strange problem with Hibernate Reactive Panache in Quarkus 3.0.0.
-   [#&#8203;32599](https://github.com/quarkusio/quarkus/issues/32599) - Dev UI: Complete Server log implementation.
-   [#&#8203;32596](https://github.com/quarkusio/quarkus/issues/32596) - Dev UI: Migrate Rest client reactive to the new Dev UI
-   [#&#8203;32589](https://github.com/quarkusio/quarkus/pull/32589) - Bump microprofile-config-tck from 3.0.2 to 3.0.3
-   [#&#8203;32587](https://github.com/quarkusio/quarkus/pull/32587) - Bump com.gradle.enterprise from 3.12.6 to 3.13 in /devtools/gradle
-   [#&#8203;32586](https://github.com/quarkusio/quarkus/pull/32586) - Validator for Config only
-   [#&#8203;32585](https://github.com/quarkusio/quarkus/issues/32585) - Write "Update projects to Quarkus 3 automatically" guide
-   [#&#8203;32584](https://github.com/quarkusio/quarkus/pull/32584) - Add JWT authentication tests to management-interface-auth
-   [#&#8203;32583](https://github.com/quarkusio/quarkus/issues/32583) - New Dev UI show numbers in submenu for arc extension
-   [#&#8203;32581](https://github.com/quarkusio/quarkus/issues/32581) - Quarkus 3.0.0.CR2 : DevUI error with custom root path
-   [#&#8203;32580](https://github.com/quarkusio/quarkus/pull/32580) - Quartz - only notify QuartzSchedulerImpl.destroy() if the bean exists
-   [#&#8203;32579](https://github.com/quarkusio/quarkus/pull/32579) - Update docs about spying on partial mocks
-   [#&#8203;32576](https://github.com/quarkusio/quarkus/pull/32576) - AWT related .so libs needed in container
-   [#&#8203;32573](https://github.com/quarkusio/quarkus/pull/32573) - Bump Keycloak version to 21.0.2
-   [#&#8203;32572](https://github.com/quarkusio/quarkus/issues/32572) - Kubernetes - RBAC ClusterRoleBinding not generating correctly?
-   [#&#8203;32571](https://github.com/quarkusio/quarkus/pull/32571) - Gradle integration tests: tackle (Windows) CI issues
-   [#&#8203;32565](https://github.com/quarkusio/quarkus/pull/32565) - Fix Otel propagator for old property
-   [#&#8203;32564](https://github.com/quarkusio/quarkus/pull/32564) - Remove useless leading spaces in sam YAML files
-   [#&#8203;32563](https://github.com/quarkusio/quarkus/pull/32563) - Small UI fix to devservice page
-   [#&#8203;32561](https://github.com/quarkusio/quarkus/pull/32561) - Properly perform reflection registration for `@Gauge` instances
-   [#&#8203;32559](https://github.com/quarkusio/quarkus/pull/32559) - Disable flaky OpenTelemetry Jdbc instrumentation test
-   [#&#8203;32558](https://github.com/quarkusio/quarkus/pull/32558) - Remove lambdas from OidcRecorder
-   [#&#8203;32554](https://github.com/quarkusio/quarkus/pull/32554) - Bump mockito-core from 5.2.0 to 5.3.0
-   [#&#8203;32538](https://github.com/quarkusio/quarkus/pull/32538) - Use local lookup policy for generated image stream resources
-   [#&#8203;32533](https://github.com/quarkusio/quarkus/issues/32533) - Exceptions with Hibernate Reactive under load
-   [#&#8203;32527](https://github.com/quarkusio/quarkus/pull/32527) - Update apicurio registry dependencies
-   [#&#8203;32464](https://github.com/quarkusio/quarkus/issues/32464) - Spring Data API Extension not updating generic mapping
-   [#&#8203;32427](https://github.com/quarkusio/quarkus/issues/32427) - Smallrye-metrics integration test fails when passing `-H:-ParseOnce` GraalVM option
-   [#&#8203;32414](https://github.com/quarkusio/quarkus/issues/32414) - ERROR Being Logged In Quarkus 3.0.0.CR1 DevUIProcessor with camel-quarkus-twilio extension
-   [#&#8203;32384](https://github.com/quarkusio/quarkus/pull/32384) - Provide an update guide
-   [#&#8203;32332](https://github.com/quarkusio/quarkus/issues/32332) - Unknown enum constant org.osgi.annotation.bundle.Requirement.Resolution.OPTIONAL
-   [#&#8203;32326](https://github.com/quarkusio/quarkus/issues/32326) - DevUI: Info change from Card to Menu
-   [#&#8203;32210](https://github.com/quarkusio/quarkus/issues/32210) - Use of the `quarkus-opentelemetry` extension yields config warnings
-   [#&#8203;31908](https://github.com/quarkusio/quarkus/issues/31908) - Add Management auth test confirming OIDC works for the main router only
-   [#&#8203;31587](https://github.com/quarkusio/quarkus/issues/31587) - RESTEasy Reactive SSE doesn't provide method annotations, nor actual headers to `MessageBodyWriter`
-   [#&#8203;31554](https://github.com/quarkusio/quarkus/issues/31554) - RunTimeMappingsConfigBuilder failures (native build/tests) with 2.16.4
-   [#&#8203;31543](https://github.com/quarkusio/quarkus/issues/31543) - Improving the sam.jvm.yaml
-   [#&#8203;30555](https://github.com/quarkusio/quarkus/issues/30555) - Quarkus jacoco coverage not working in a multi module project where code and tests are in separate modules
-   [#&#8203;30312](https://github.com/quarkusio/quarkus/issues/30312) - Reactive Client ResponseExceptionMapper throws BlockingNotAllowedException when consuming an InputStream
-   [#&#8203;29879](https://github.com/quarkusio/quarkus/issues/29879) - Create an opentelemetry-aws IT test project
-   [#&#8203;28505](https://github.com/quarkusio/quarkus/pull/28505) - Support a silent mode for JWTAuthMechanism
-   [#&#8203;24540](https://github.com/quarkusio/quarkus/issues/24540) - NullPointerException on custom consraint validator when injecting a config mapping at startup

### [`v3.0.0.Final`](https://github.com/quarkusio/quarkus/releases/tag/3.0.0.Final)

[Compare Source](https://github.com/quarkusio/quarkus/compare/3.0.0.CR2...3.0.0.Final)

##### Major changes

-   [#&#8203;32491](https://github.com/quarkusio/quarkus/pull/32491) - Dev UI:  Continuous testing
-   [#&#8203;25422](https://github.com/quarkusio/quarkus/issues/25422) - Make Stork CDI-aware

##### Complete changelog

-   [#&#8203;32560](https://github.com/quarkusio/quarkus/issues/32560) - quarkus plugin repeats arguments passed to cli rendering users incapable of passing right arguments
-   [#&#8203;32555](https://github.com/quarkusio/quarkus/pull/32555) - Change pie to bar in continuous-testing dev ui
-   [#&#8203;32553](https://github.com/quarkusio/quarkus/pull/32553) - Bump maven-invoker-plugin from 3.4.0 to 3.5.1
-   [#&#8203;32543](https://github.com/quarkusio/quarkus/pull/32543) - Dev UI 2 - Hide the RESTEasy Reactive score on the home page
-   [#&#8203;32542](https://github.com/quarkusio/quarkus/pull/32542) - Various fixes for Kubernetes Dev UI 2
-   [#&#8203;32541](https://github.com/quarkusio/quarkus/pull/32541) - Remove inexistent relocations in the application BOM
-   [#&#8203;32540](https://github.com/quarkusio/quarkus/issues/32540) - Dev Ui for kubernetes throws error on manifest generation
-   [#&#8203;32536](https://github.com/quarkusio/quarkus/pull/32536) - Various Quarkus Update fixes and enhancements
-   [#&#8203;32535](https://github.com/quarkusio/quarkus/pull/32535) - Gradle: do not pass all system properties
-   [#&#8203;32528](https://github.com/quarkusio/quarkus/pull/32528) - Add triage rule for Dev UI
-   [#&#8203;32524](https://github.com/quarkusio/quarkus/pull/32524) - Gradle: ability to disable worker process isolation, pass all envs+sys-props
-   [#&#8203;32522](https://github.com/quarkusio/quarkus/issues/32522) - devui 2 continous testing layout issues
-   [#&#8203;32521](https://github.com/quarkusio/quarkus/pull/32521) - ArC - optimize if no BuildCompatibleExtension is found
-   [#&#8203;32520](https://github.com/quarkusio/quarkus/pull/32520) - Use list with an empty string by default in generated Role/ClusterRole
-   [#&#8203;32519](https://github.com/quarkusio/quarkus/issues/32519) - Generating Role or ClusterRole resources with empty API group property produces invalid manifests
-   [#&#8203;32518](https://github.com/quarkusio/quarkus/pull/32518) - Devui small enchancements
-   [#&#8203;32509](https://github.com/quarkusio/quarkus/issues/32509) - Native `quarkusBuild` fails with 3.0.0.CR2
-   [#&#8203;32508](https://github.com/quarkusio/quarkus/pull/32508) - Gradle-Plugin: Do not let Gradle build fail w/ configuration cache
-   [#&#8203;32502](https://github.com/quarkusio/quarkus/pull/32502) - Disable Vert.x file caching when building the k8s client HttpClient.Factory
-   [#&#8203;32499](https://github.com/quarkusio/quarkus/issues/32499) - Kubernetes client thread block
-   [#&#8203;32497](https://github.com/quarkusio/quarkus/pull/32497) - Bump mongo-client.version from 4.9.0 to 4.9.1
-   [#&#8203;32496](https://github.com/quarkusio/quarkus/pull/32496) - Bump smallrye-fault-tolerance.version from 6.2.1 to 6.2.2
-   [#&#8203;32495](https://github.com/quarkusio/quarkus/pull/32495) - Bump com.gradle.plugin-publish from 1.1.0 to 1.2.0 in /devtools/gradle
-   [#&#8203;32491](https://github.com/quarkusio/quarkus/pull/32491) - Dev UI:  Continuous testing
-   [#&#8203;32490](https://github.com/quarkusio/quarkus/pull/32490) - Avoid null pointer exception when building containers
-   [#&#8203;32489](https://github.com/quarkusio/quarkus/pull/32489) - Upgrade Oracle DB container images to use the slim-faststart variant
-   [#&#8203;32488](https://github.com/quarkusio/quarkus/pull/32488) - Higher timeouts for various builds
-   [#&#8203;32487](https://github.com/quarkusio/quarkus/pull/32487) - Support referencing method parameters in `@ClientHeaderParam`
-   [#&#8203;32478](https://github.com/quarkusio/quarkus/pull/32478) - Fix base-codestart 2.x
-   [#&#8203;32476](https://github.com/quarkusio/quarkus/pull/32476) - Fix native image warning in Kafka
-   [#&#8203;32472](https://github.com/quarkusio/quarkus/pull/32472) - Update getting started reactive image
-   [#&#8203;32467](https://github.com/quarkusio/quarkus/pull/32467) - DevUI: Liquibase and Datasource updates
-   [#&#8203;32465](https://github.com/quarkusio/quarkus/issues/32465) - Native build fails with 3.0.0.CR2
-   [#&#8203;32461](https://github.com/quarkusio/quarkus/issues/32461) - Quarkus 3.0.0.CR2 - quarkus-kafka-client triggers NativeImageBuildStep in JVM mode
-   [#&#8203;32458](https://github.com/quarkusio/quarkus/pull/32458) - Align deployment image name when custom name is set in Openshift configuration
-   [#&#8203;32450](https://github.com/quarkusio/quarkus/pull/32450) - Bump flyway.version from 9.16.1 to 9.16.3
-   [#&#8203;32448](https://github.com/quarkusio/quarkus/pull/32448) - Local cache upgrade
-   [#&#8203;32443](https://github.com/quarkusio/quarkus/issues/32443) - DevUI: Configuration Changes Not Sticking
-   [#&#8203;32439](https://github.com/quarkusio/quarkus/issues/32439) - Openshift resources getting out of sync when custom quarkus.openshift.name is used.
-   [#&#8203;32437](https://github.com/quarkusio/quarkus/pull/32437) - Test default storage change for OffsetTime in Hibernate ORM 6.2.0.Final
-   [#&#8203;32435](https://github.com/quarkusio/quarkus/pull/32435) - Upgrade the reference Oracle RDBMS container used across integration tests
-   [#&#8203;32433](https://github.com/quarkusio/quarkus/pull/32433) - Fix Hibernate ORM value generators in native image
-   [#&#8203;32430](https://github.com/quarkusio/quarkus/pull/32430) - Include ID in the form inputs
-   [#&#8203;32428](https://github.com/quarkusio/quarkus/pull/32428) - Rename guides mentioning MicroProfile to SmallRye to avoid redirects
-   [#&#8203;32425](https://github.com/quarkusio/quarkus/pull/32425) - Sanitize the behavior of provided ExceptionMapper classes in dev-mode
-   [#&#8203;32423](https://github.com/quarkusio/quarkus/pull/32423) - Bump httpclient from 4.5.13 to 4.5.14
-   [#&#8203;32418](https://github.com/quarkusio/quarkus/issues/32418) - Native build with jib and gradle fails on quarkus 3.0.0.CR1
-   [#&#8203;32409](https://github.com/quarkusio/quarkus/pull/32409) - InjectMock should not mock an intercepted subclass
-   [#&#8203;32407](https://github.com/quarkusio/quarkus/pull/32407) - Arc CDI TCK related fixes, focused around behavior gated behind strict mode
-   [#&#8203;32404](https://github.com/quarkusio/quarkus/pull/32404) - Fix ConfigMap volumes example at deploying-to-openshift.adoc
-   [#&#8203;32394](https://github.com/quarkusio/quarkus/pull/32394) - Test gRPC usage of Vert.x event loops
-   [#&#8203;32366](https://github.com/quarkusio/quarkus/pull/32366) - Update version detection scheme for native
-   [#&#8203;32357](https://github.com/quarkusio/quarkus/issues/32357) - Αllow referring to property parameters in header config of REST Client
-   [#&#8203;32350](https://github.com/quarkusio/quarkus/pull/32350) - Gradle: Help extensions that assume the output directory exists
-   [#&#8203;32338](https://github.com/quarkusio/quarkus/pull/32338) - Proofreading for cli-tooling.adoc
-   [#&#8203;32333](https://github.com/quarkusio/quarkus/issues/32333) - Quarkus 3.0.0.CR1 throw NoSuchMethodException where use   `@CreationTimestamp`  and   `@UpdateTimestamp`  in native mode
-   [#&#8203;32316](https://github.com/quarkusio/quarkus/pull/32316) - Update SmallRye Config to 3.2.1
-   [#&#8203;32474](https://github.com/quarkusio/quarkus/issues/32474) - Quarkus 3 kotlin generation missconfigures allopen
-   [#&#8203;32276](https://github.com/quarkusio/quarkus/pull/32276) - Switch Hibernate Search extension to `@ConfigMapping`
-   [#&#8203;32233](https://github.com/quarkusio/quarkus/issues/32233) - Clicking on Dev UI main logo/title doesn't bring me to the home page
-   [#&#8203;32230](https://github.com/quarkusio/quarkus/issues/32230) - Dev UI 2 - Fonts are blurry (Chrome / Fedora)
-   [#&#8203;32162](https://github.com/quarkusio/quarkus/pull/32162) - Register implicit converters for reflection
-   [#&#8203;31932](https://github.com/quarkusio/quarkus/issues/31932) - Dev UI 2 - generate-code gets maven-metadata.xml for Vaadin components
-   [#&#8203;31898](https://github.com/quarkusio/quarkus/issues/31898) - Test and document default storage change for `OffsetTime` in Hibernate ORM 6
-   [#&#8203;28065](https://github.com/quarkusio/quarkus/issues/28065) - ConfigMapping - register type arguments of supported generic return types for reflection
-   [#&#8203;25422](https://github.com/quarkusio/quarkus/issues/25422) - Make Stork CDI-aware
-   [#&#8203;18973](https://github.com/quarkusio/quarkus/issues/18973) - Java OOM Java heap space when I use WithKubernetesTestServer annotation in unit test
-   [#&#8203;7883](https://github.com/quarkusio/quarkus/issues/7883) - built-in ExceptionMappers cause unexpected behavior

### [`v3.0.0.CR2`](https://github.com/quarkusio/quarkus/releases/tag/3.0.0.CR2)

[Compare Source](https://github.com/quarkusio/quarkus/compare/3.0.0.CR1...3.0.0.CR2)

##### Major changes

-   [#&#8203;32362](https://github.com/quarkusio/quarkus/pull/32362) - Add Gradle project update
-   [#&#8203;32151](https://github.com/quarkusio/quarkus/pull/32151) - Make Dev UI 2 the default Dev UI
-   [#&#8203;32136](https://github.com/quarkusio/quarkus/pull/32136) - Introduce HTTP security policy mapping between roles and permissions

##### Complete changelog

-   [#&#8203;32406](https://github.com/quarkusio/quarkus/pull/32406) - RestClient Reactive: copy method parameter annotations to the generated class
-   [#&#8203;32405](https://github.com/quarkusio/quarkus/pull/32405) - ArC: fix spying on intercepted beans
-   [#&#8203;32403](https://github.com/quarkusio/quarkus/pull/32403) - Make SDKMAN releases minor for maintenance and preview releases
-   [#&#8203;32402](https://github.com/quarkusio/quarkus/pull/32402) - Fix ConfigMap volumes example at deploying-to-kubernetes.adoc
-   [#&#8203;32401](https://github.com/quarkusio/quarkus/pull/32401) - Remove Amazon Services related entries from MAINTAINERS.adoc
-   [#&#8203;32400](https://github.com/quarkusio/quarkus/pull/32400) - DevUI: RabbitMQ Reactive Messaging
-   [#&#8203;32396](https://github.com/quarkusio/quarkus/pull/32396) - Provide an actionable console item for missing DevUI
-   [#&#8203;32395](https://github.com/quarkusio/quarkus/pull/32395) - Bump Dekorate to 3.5.4
-   [#&#8203;32393](https://github.com/quarkusio/quarkus/pull/32393) - Allow relying on Jackson-databind in Dev UI JsonRpc services regardless of runtime dependencies
-   [#&#8203;32390](https://github.com/quarkusio/quarkus/pull/32390) - Fix copy paste typo
-   [#&#8203;32388](https://github.com/quarkusio/quarkus/pull/32388) - Add some documentation about the /q/info endpoint
-   [#&#8203;32387](https://github.com/quarkusio/quarkus/pull/32387) - Update Test timeouts for Windows
-   [#&#8203;32386](https://github.com/quarkusio/quarkus/pull/32386) - Do not print stack-trace in LogStreamBroadcaster.recordHistory
-   [#&#8203;32380](https://github.com/quarkusio/quarkus/pull/32380) - Bump jacoco.version from 0.8.8 to 0.8.9
-   [#&#8203;32371](https://github.com/quarkusio/quarkus/pull/32371) - Add a way to expose more git info
-   [#&#8203;32364](https://github.com/quarkusio/quarkus/pull/32364) - Improve error message when a to-index dependency is missing
-   [#&#8203;32362](https://github.com/quarkusio/quarkus/pull/32362) - Add Gradle project update
-   [#&#8203;32360](https://github.com/quarkusio/quarkus/pull/32360) - Qute validation - fix the way the namespace expressions are collected
-   [#&#8203;32356](https://github.com/quarkusio/quarkus/pull/32356) - Refactor the QuteProcessor#validateNestedExpressions() method
-   [#&#8203;32355](https://github.com/quarkusio/quarkus/issues/32355) - Cannot using 2 classes with Qute `@MessageBundle` with different namespace
-   [#&#8203;32351](https://github.com/quarkusio/quarkus/pull/32351) - Cleanup PackageConfig
-   [#&#8203;32349](https://github.com/quarkusio/quarkus/pull/32349) - Better error on unparseable GraphQL JSON request
-   [#&#8203;32342](https://github.com/quarkusio/quarkus/pull/32342) - Avoid deprecated Maven API in DevMojo
-   [#&#8203;32339](https://github.com/quarkusio/quarkus/pull/32339) - Add the .quarkus directory to project .gitignore
-   [#&#8203;32335](https://github.com/quarkusio/quarkus/pull/32335) - Native sources build step output GraalVM version and docker image to use
-   [#&#8203;32334](https://github.com/quarkusio/quarkus/issues/32334) - Pressing ‘d’ for open dev mode should provide info on how to enable devui if devui not available
-   [#&#8203;32331](https://github.com/quarkusio/quarkus/pull/32331) - Documentation: fix typos and merged paragraphs in extending the CLI section
-   [#&#8203;32328](https://github.com/quarkusio/quarkus/issues/32328) - native sources build step should tell the GraalVM version to use
-   [#&#8203;32325](https://github.com/quarkusio/quarkus/pull/32325) - CLI plugin improvements and fixes
-   [#&#8203;32323](https://github.com/quarkusio/quarkus/pull/32323) - Bump elasticsearch-opensource-components.version from 8.6.2 to 8.7.0
-   [#&#8203;32321](https://github.com/quarkusio/quarkus/pull/32321) - Bump groovy from 4.0.10 to 4.0.11
-   [#&#8203;32318](https://github.com/quarkusio/quarkus/pull/32318) - Revert io.netty.noUnsafe change
-   [#&#8203;32314](https://github.com/quarkusio/quarkus/pull/32314) - DevUI: SmallRye Metrics
-   [#&#8203;32312](https://github.com/quarkusio/quarkus/pull/32312) - Change link to new Dev UI
-   [#&#8203;32310](https://github.com/quarkusio/quarkus/pull/32310) - Set a slightly higher memory for testing
-   [#&#8203;32308](https://github.com/quarkusio/quarkus/pull/32308) - Upgrade to Hibernate ORM 6.2.0.Final and Hibernate Reactive 2.0.0.Beta1
-   [#&#8203;32307](https://github.com/quarkusio/quarkus/pull/32307) - DevUI: Info extension
-   [#&#8203;32306](https://github.com/quarkusio/quarkus/pull/32306) - Bump smallrye-jwt version to 4.2.1
-   [#&#8203;32305](https://github.com/quarkusio/quarkus/issues/32305) - quarkus kill should on discovery say what it is installing
-   [#&#8203;32304](https://github.com/quarkusio/quarkus/issues/32304) - quarkus plug caching issue?
-   [#&#8203;32303](https://github.com/quarkusio/quarkus/issues/32303) - qurkus kill fails if jbang not installed
-   [#&#8203;32300](https://github.com/quarkusio/quarkus/issues/32300) - Mocking/stubbing/spying not working right in Quarkus 3.x
-   [#&#8203;32299](https://github.com/quarkusio/quarkus/issues/32299) - Refactor the QuteProcessor#validateNestedExpressions() method
-   [#&#8203;32297](https://github.com/quarkusio/quarkus/pull/32297) - Fix intellij tests
-   [#&#8203;32296](https://github.com/quarkusio/quarkus/pull/32296) - Properly include logging filters in named handlers
-   [#&#8203;32291](https://github.com/quarkusio/quarkus/issues/32291) - Logging: filter not set on named handler
-   [#&#8203;32289](https://github.com/quarkusio/quarkus/issues/32289) - Quarkus 3.0.0.Alpha4 introduces a performance regression
-   [#&#8203;32284](https://github.com/quarkusio/quarkus/pull/32284) - Bump microprofile-health-api from 4.0 to 4.0.1
-   [#&#8203;32279](https://github.com/quarkusio/quarkus/pull/32279) - Save creation of hashset and array to create an immutable set
-   [#&#8203;32270](https://github.com/quarkusio/quarkus/pull/32270) - Dev UI - First version of build steps and build items pages
-   [#&#8203;32264](https://github.com/quarkusio/quarkus/pull/32264) - OpenShift Dev UI
-   [#&#8203;32262](https://github.com/quarkusio/quarkus/pull/32262) - Upgrade graphql-java to 20.1 and smallrye-graphql 2.1.3
-   [#&#8203;32255](https://github.com/quarkusio/quarkus/pull/32255) - Ensure redis-cache does not cause load value on the wrong executor
-   [#&#8203;32251](https://github.com/quarkusio/quarkus/pull/32251) - Integrate Stork 2.1.0
-   [#&#8203;32249](https://github.com/quarkusio/quarkus/pull/32249) - Dev UI Resteasy reactive: no endpoint and card
-   [#&#8203;32248](https://github.com/quarkusio/quarkus/pull/32248) - Bump smallrye-open-api.version from 3.3.1 to 3.3.2
-   [#&#8203;32236](https://github.com/quarkusio/quarkus/pull/32236) - Take into account "fallback to container" when determining where native-image gets executed
-   [#&#8203;32232](https://github.com/quarkusio/quarkus/pull/32232) - Take into account quarkus.resteasy.gzip.max-input in classic REST Client
-   [#&#8203;32228](https://github.com/quarkusio/quarkus/issues/32228) - Dev UI 2 - RESTEasy Reactive speedometer on front page really a good idea?
-   [#&#8203;32221](https://github.com/quarkusio/quarkus/pull/32221) - ArC - minor cleanup
-   [#&#8203;32216](https://github.com/quarkusio/quarkus/issues/32216) - devui for resteasy reactive give 0% rating when no endpoints yet
-   [#&#8203;32214](https://github.com/quarkusio/quarkus/pull/32214) - Avoid instantiating JPAConfig just to destroy it when static init fails
-   [#&#8203;32208](https://github.com/quarkusio/quarkus/pull/32208) - Ensure RoleBinding resource is generated after Role/ClusterRole/ServiceAccount resources
-   [#&#8203;32205](https://github.com/quarkusio/quarkus/pull/32205) - Bump Gradle to 8.0.2
-   [#&#8203;32203](https://github.com/quarkusio/quarkus/issues/32203) - Do not print stack-trace in LogStreamBroadcaster.recordHistory
-   [#&#8203;32193](https://github.com/quarkusio/quarkus/issues/32193) - Kubernetes config now requires explicit `view-secrets` authorization to access secrets that is not needed
-   [#&#8203;32151](https://github.com/quarkusio/quarkus/pull/32151) - Make Dev UI 2 the default Dev UI
-   [#&#8203;32136](https://github.com/quarkusio/quarkus/pull/32136) - Introduce HTTP security policy mapping between roles and permissions
-   [#&#8203;32111](https://github.com/quarkusio/quarkus/issues/32111) - stork-configuration-generator 2.0.z gives java.lang.NoClassDefFoundError: jakarta/enterprise/inject/spi/CDI: jakarta.enterprise.inject.spi.CDI
-   [#&#8203;31939](https://github.com/quarkusio/quarkus/pull/31939) - A bit of javadoc for codegen
-   [#&#8203;31784](https://github.com/quarkusio/quarkus/pull/31784) - RESTEasy Reactive: Handle separator for bean params
-   [#&#8203;31556](https://github.com/quarkusio/quarkus/pull/31556) - Properly monitor config for changes loaded from `quarkus.config.locations`
-   [#&#8203;31050](https://github.com/quarkusio/quarkus/issues/31050) - Combining `@Separator` and `@BeanParam`
-   [#&#8203;29000](https://github.com/quarkusio/quarkus/issues/29000) - \[EPIC] Allow to migrate from Quarkus 2 to 3 with our tooling
-   [#&#8203;12941](https://github.com/quarkusio/quarkus/issues/12941) - quarkus.resteasy.gzip.max-input does not apply for REST client
-   [#&#8203;12219](https://github.com/quarkusio/quarkus/issues/12219) - Add support for Roles with permissions

### [`v3.0.0.CR1`](https://github.com/quarkusio/quarkus/releases/tag/3.0.0.CR1)

[Compare Source](https://github.com/quarkusio/quarkus/compare/3.0.0.Beta1...3.0.0.CR1)

##### Major changes

-   [#&#8203;32161](https://github.com/quarkusio/quarkus/pull/32161) - Introduce a first version of the `/q/info` endpoint
-   [#&#8203;32104](https://github.com/quarkusio/quarkus/pull/32104) - Add support for multiple mailers
-   [#&#8203;31917](https://github.com/quarkusio/quarkus/pull/31917) - Use SmallRye BeanBag to initialize Maven RepositorySystem for compatibility with Maven 3.9
-   [#&#8203;31865](https://github.com/quarkusio/quarkus/pull/31865) - Implement a backend for Quarkus Cache using Redis
-   [#&#8203;31198](https://github.com/quarkusio/quarkus/pull/31198) - Introduce CLI plugins

##### Complete changelog

-   [#&#8203;32244](https://github.com/quarkusio/quarkus/pull/32244) - Add doc on Kafka Streams production configuration
-   [#&#8203;32243](https://github.com/quarkusio/quarkus/pull/32243) - Make sure quarkus-cli can initialize the Maven resolver
-   [#&#8203;32235](https://github.com/quarkusio/quarkus/pull/32235) - Remove lock icon for runtime config overrides
-   [#&#8203;32229](https://github.com/quarkusio/quarkus/issues/32229) - new devui shows locks  for both locked at build time and not build time
-   [#&#8203;32227](https://github.com/quarkusio/quarkus/pull/32227) - Upgrade Caffeine 3.1.5
-   [#&#8203;32224](https://github.com/quarkusio/quarkus/pull/32224) - Apply some housekeeping to RESTEasy Reactive
-   [#&#8203;32219](https://github.com/quarkusio/quarkus/issues/32219) - Creating extension fails over missing bean `RepositorySystem`
-   [#&#8203;32213](https://github.com/quarkusio/quarkus/pull/32213) - ArC: fix known-compatible bean archives check
-   [#&#8203;32212](https://github.com/quarkusio/quarkus/pull/32212) - Kubernetes DEV UI extension
-   [#&#8203;32207](https://github.com/quarkusio/quarkus/pull/32207) - Fix typo in OpenShift liveness probe
-   [#&#8203;32201](https://github.com/quarkusio/quarkus/pull/32201) - Dev UI: Allow multiple pages for menu items
-   [#&#8203;32199](https://github.com/quarkusio/quarkus/pull/32199) - Add support of Temporal types for cookie and header params
-   [#&#8203;32198](https://github.com/quarkusio/quarkus/pull/32198) - Bump quarkus-platform-bom-maven-plugin from 0.0.80 to 0.0.81
-   [#&#8203;32195](https://github.com/quarkusio/quarkus/pull/32195) - Remove misplaced System.out.println
-   [#&#8203;32194](https://github.com/quarkusio/quarkus/issues/32194) - `@RestCookie`/`@RestHeader` (and relative @&#8203;\*Param) applied to Temporal parameter lead to deployment failure
-   [#&#8203;32186](https://github.com/quarkusio/quarkus/pull/32186) - Remove `quarkus-bootstrap-maven-plugin`
-   [#&#8203;32184](https://github.com/quarkusio/quarkus/issues/32184) - DevUI: Allow JsonRpc to other extensions
-   [#&#8203;32183](https://github.com/quarkusio/quarkus/pull/32183) - Enhance MS Azure content doc portal search results
-   [#&#8203;32179](https://github.com/quarkusio/quarkus/pull/32179) - Arc - introduce built-in bean for injection point of type `@All` List<X>
-   [#&#8203;32178](https://github.com/quarkusio/quarkus/pull/32178) - Simplify MutinyInfrastructure
-   [#&#8203;32173](https://github.com/quarkusio/quarkus/pull/32173) - CLI plugin improvements
-   [#&#8203;32172](https://github.com/quarkusio/quarkus/pull/32172) - Bump Dekorate to 3.5.3
-   [#&#8203;32171](https://github.com/quarkusio/quarkus/pull/32171) - Bump jboss-metadata-web from 15.4.0 to 16.0.0.Final
-   [#&#8203;32170](https://github.com/quarkusio/quarkus/pull/32170) - Bump asm.version from 9.4 to 9.5
-   [#&#8203;32169](https://github.com/quarkusio/quarkus/pull/32169) - Bump cron-utils from 9.2.0 to 9.2.1
-   [#&#8203;32167](https://github.com/quarkusio/quarkus/pull/32167) - Rework sequence handling in import scripts in codestarts, guides and tests
-   [#&#8203;32166](https://github.com/quarkusio/quarkus/pull/32166) - ApplyHttpGetActionPortDecorator now also sets scheme
-   [#&#8203;32163](https://github.com/quarkusio/quarkus/pull/32163) - Bump the lowest supported Maven version to 3.6.3
-   [#&#8203;32161](https://github.com/quarkusio/quarkus/pull/32161) - Introduce a first version of the `/q/info` endpoint
-   [#&#8203;32153](https://github.com/quarkusio/quarkus/pull/32153) - Add `.sdkmanrc` file
-   [#&#8203;32146](https://github.com/quarkusio/quarkus/pull/32146) - Update brotli4j to version 1.11.0
-   [#&#8203;32141](https://github.com/quarkusio/quarkus/pull/32141) - OpenAPI: ignore build-time excluded classes from annotation scan
-   [#&#8203;32140](https://github.com/quarkusio/quarkus/pull/32140) - Upgrade gRPC lib to 1.54.0, handle newly generated AsyncService
-   [#&#8203;32139](https://github.com/quarkusio/quarkus/pull/32139) - Improve the dev mode console output
-   [#&#8203;32138](https://github.com/quarkusio/quarkus/pull/32138) - Provide proper Docker executable name on Windows
-   [#&#8203;32137](https://github.com/quarkusio/quarkus/pull/32137) - Update jansi and aesh-readline to latest versions
-   [#&#8203;32135](https://github.com/quarkusio/quarkus/issues/32135) - Quarkus-openshift fails to properly deploy applications which use management interface
-   [#&#8203;32131](https://github.com/quarkusio/quarkus/pull/32131) - Bump surefire and failsafe plugins to `3.0.0`
-   [#&#8203;32130](https://github.com/quarkusio/quarkus/pull/32130) - Add support for specifying custom profiles in Spring Cloud Config client
-   [#&#8203;32128](https://github.com/quarkusio/quarkus/pull/32128) - Support config reactive datasource with list of database urls for fault tolerance and load balance
-   [#&#8203;32125](https://github.com/quarkusio/quarkus/pull/32125) - Bump com.gradle.enterprise from 3.12.5 to 3.12.6 in /devtools/gradle
-   [#&#8203;32120](https://github.com/quarkusio/quarkus/pull/32120) - Silence JBoss version logging in QuarkusUnitTest
-   [#&#8203;32119](https://github.com/quarkusio/quarkus/pull/32119) - Support JSON formatter for syslog logging
-   [#&#8203;32116](https://github.com/quarkusio/quarkus/pull/32116) - ArC AnnotationsTransformer - add more specific builders
-   [#&#8203;32115](https://github.com/quarkusio/quarkus/pull/32115) - Rename `InitalizationTaskCompletedBuildItem` to `InitTaskCompletedBuildItem`
-   [#&#8203;32113](https://github.com/quarkusio/quarkus/pull/32113) - Support of gRPC actions for Kubernetes/Knative/OpenShift probes
-   [#&#8203;32110](https://github.com/quarkusio/quarkus/pull/32110) - Prevent splitting of cookie header values when using AWS Lambda
-   [#&#8203;32107](https://github.com/quarkusio/quarkus/pull/32107) - Fix Podman detection on Windows
-   [#&#8203;32106](https://github.com/quarkusio/quarkus/issues/32106) - Native building with container: Podman not detected on Windows
-   [#&#8203;32105](https://github.com/quarkusio/quarkus/pull/32105) - Disable validation of JAXBContext by default
-   [#&#8203;32104](https://github.com/quarkusio/quarkus/pull/32104) - Add support for multiple mailers
-   [#&#8203;32101](https://github.com/quarkusio/quarkus/pull/32101) - Dev UI: Auto naming for JsonRPC and build time data
-   [#&#8203;32100](https://github.com/quarkusio/quarkus/pull/32100) - Fix Kotlin formatting
-   [#&#8203;32099](https://github.com/quarkusio/quarkus/pull/32099) - Allow using the annotation `@PartFilename` on method parameters
-   [#&#8203;32097](https://github.com/quarkusio/quarkus/issues/32097) - quarks-spring-cloud-config-client cannot take "profile" as a property which was supported by spring
-   [#&#8203;32095](https://github.com/quarkusio/quarkus/pull/32095) - Bump smallrye-open-api.version from 3.3.0 to 3.3.1
-   [#&#8203;32094](https://github.com/quarkusio/quarkus/pull/32094) - Bump mariadb-java-client from 3.1.2 to 3.1.3
-   [#&#8203;32093](https://github.com/quarkusio/quarkus/pull/32093) - Re-use current ApplicationModel for JaCoCo reports when testing Gradle projects
-   [#&#8203;32091](https://github.com/quarkusio/quarkus/pull/32091) - DevUI: Liquibase
-   [#&#8203;32090](https://github.com/quarkusio/quarkus/pull/32090) - K8s moved its registry
-   [#&#8203;32086](https://github.com/quarkusio/quarkus/pull/32086) - Ensure Dialects initialzed by Hibernate Reactive extension use the ReactiveDialectWrapper
-   [#&#8203;32085](https://github.com/quarkusio/quarkus/pull/32085) - Do not require `@ConfigGroup` to generate mappings documentation
-   [#&#8203;32083](https://github.com/quarkusio/quarkus/pull/32083) - Add missing mp-health and mp-fault-tolerance apis in bom
-   [#&#8203;32082](https://github.com/quarkusio/quarkus/pull/32082) - Add missing quote in Hibernate Reactive with Panache guide
-   [#&#8203;32081](https://github.com/quarkusio/quarkus/issues/32081) - Created extension failes to generate code as it is unable to provision BootstrapWorkspaceProvider
-   [#&#8203;32080](https://github.com/quarkusio/quarkus/issues/32080) - Can't inject list of interfaces with wildcards twice into beans
-   [#&#8203;32079](https://github.com/quarkusio/quarkus/issues/32079) - Quarkus JaCoCo extension fails to start Gradle daemon
-   [#&#8203;32077](https://github.com/quarkusio/quarkus/pull/32077) - Get rid of Stork related warning in REST Client usage
-   [#&#8203;32076](https://github.com/quarkusio/quarkus/pull/32076) - Add note in the docs about using OData with the REST Client
-   [#&#8203;32074](https://github.com/quarkusio/quarkus/pull/32074) - Create the "Using the Infinispan Client" guide
-   [#&#8203;32073](https://github.com/quarkusio/quarkus/pull/32073) - Fix OTel exporter headers config
-   [#&#8203;32072](https://github.com/quarkusio/quarkus/pull/32072) - Ensure that computed headers can override the default content-type
-   [#&#8203;32069](https://github.com/quarkusio/quarkus/pull/32069) - List of AWT runtime initialized classes not observable for other extensions
-   [#&#8203;32065](https://github.com/quarkusio/quarkus/issues/32065) - List of AWT runtime initialized classes not observable for other extensions
-   [#&#8203;32063](https://github.com/quarkusio/quarkus/pull/32063) - Qute - the new Dev UI
-   [#&#8203;32061](https://github.com/quarkusio/quarkus/pull/32061) - Support `@PartFilename` on InputStream and Multi<Byte> fields
-   [#&#8203;32060](https://github.com/quarkusio/quarkus/pull/32060) - The quarkus-jaxb extension loads entity classes at build time even though no default JAXBContext will be created within the application
-   [#&#8203;32059](https://github.com/quarkusio/quarkus/issues/32059) - `quarkus-jaxb` loads entity classes at build time even though no default JAXBContext will be created within the application
-   [#&#8203;32056](https://github.com/quarkusio/quarkus/pull/32056) - Bump postgresql from 42.5.4 to 42.6.0
-   [#&#8203;32055](https://github.com/quarkusio/quarkus/pull/32055) - Bump commons-compress from 1.22 to 1.23.0
-   [#&#8203;32053](https://github.com/quarkusio/quarkus/pull/32053) - Remove Java 19 from Early Access JDK Build
-   [#&#8203;32050](https://github.com/quarkusio/quarkus/pull/32050) - Move OTel configuration to use `@ConfigMapping`
-   [#&#8203;32048](https://github.com/quarkusio/quarkus/pull/32048) - Caffeine Dev UI
-   [#&#8203;32044](https://github.com/quarkusio/quarkus/pull/32044) - Port some Hibernate ORM extension features to the Hibernate Reactive extension
-   [#&#8203;32042](https://github.com/quarkusio/quarkus/pull/32042) - Dev UI - BuildTimeContentProcessor - use the mapper from DatabindCodec
-   [#&#8203;32041](https://github.com/quarkusio/quarkus/issues/32041) - K8s is moving it's images
-   [#&#8203;32040](https://github.com/quarkusio/quarkus/issues/32040) - Hibernate Reactive - trouble using identity generation strategy
-   [#&#8203;32039](https://github.com/quarkusio/quarkus/pull/32039) - Fix package declaration of the DevUIContent
-   [#&#8203;32038](https://github.com/quarkusio/quarkus/pull/32038) - The annotation `@RestStreamElementType` should override `@Produces` at class
-   [#&#8203;32037](https://github.com/quarkusio/quarkus/issues/32037) - Set-Cookie Header is Split when using OIDC together with AWS Lambda
-   [#&#8203;32036](https://github.com/quarkusio/quarkus/pull/32036) - Make header computation in Reactive REST Client more capable
-   [#&#8203;32035](https://github.com/quarkusio/quarkus/pull/32035) - Remove unwanted (and unnecessary) build-order dependency from test
-   [#&#8203;32034](https://github.com/quarkusio/quarkus/issues/32034) - jdeps broken for fast-jar layout due to brotli version in dependency chain
-   [#&#8203;32033](https://github.com/quarkusio/quarkus/issues/32033) - Allow PartFileName as method parameter
-   [#&#8203;32032](https://github.com/quarkusio/quarkus/issues/32032) - PartFilename does not work for InputStream
-   [#&#8203;32026](https://github.com/quarkusio/quarkus/pull/32026) - Allows applications to expose management endpoints
-   [#&#8203;32024](https://github.com/quarkusio/quarkus/pull/32024) - Bump de.flapdoodle.embed.mongo from 4.6.1 to 4.6.2
-   [#&#8203;32022](https://github.com/quarkusio/quarkus/pull/32022) - Bump google-http-client-bom from 1.43.0 to 1.43.1
-   [#&#8203;32018](https://github.com/quarkusio/quarkus/pull/32018) - Automatic websocket codecs reflection registration
-   [#&#8203;32013](https://github.com/quarkusio/quarkus/pull/32013) - Add Maven rewrite support to update
-   [#&#8203;32012](https://github.com/quarkusio/quarkus/issues/32012) - `@Produces`(MediaType.SERVER_SENT_EVENTS) is necessary when using server side event
-   [#&#8203;32010](https://github.com/quarkusio/quarkus/pull/32010) - Clarify diagnostic of Resteasy reactive for blocking methods
-   [#&#8203;32008](https://github.com/quarkusio/quarkus/pull/32008) - Fix HttpRootPathBuildItem.Builder.orderedRoute()
-   [#&#8203;31995](https://github.com/quarkusio/quarkus/pull/31995) - Bump dekorate from 3.5.0 to 3.5.2
-   [#&#8203;31992](https://github.com/quarkusio/quarkus/pull/31992) - Bump version.cdi-tck from 4.0.8 to 4.0.9
-   [#&#8203;31981](https://github.com/quarkusio/quarkus/pull/31981) - Implement a transformer for compatibility with downstream documentation
-   [#&#8203;31968](https://github.com/quarkusio/quarkus/issues/31968) - K8s extension with customization doesn't generate `spec.template.metadata` when it's not customized.
-   [#&#8203;31917](https://github.com/quarkusio/quarkus/pull/31917) - Use SmallRye BeanBag to initialize Maven RepositorySystem for compatibility with Maven 3.9
-   [#&#8203;31909](https://github.com/quarkusio/quarkus/pull/31909) - Fix OTel endpoint resolution and improve documentation
-   [#&#8203;31865](https://github.com/quarkusio/quarkus/pull/31865) - Implement a backend for Quarkus Cache using Redis
-   [#&#8203;31827](https://github.com/quarkusio/quarkus/pull/31827) - Bump kafka-oauth-client from 0.11.0 to 0.12.0
-   [#&#8203;31824](https://github.com/quarkusio/quarkus/pull/31824) - Update SmallRye Config to 3.2.0
-   [#&#8203;31820](https://github.com/quarkusio/quarkus/pull/31820) - Change the  kotlin formatter to better support building under Java 17
-   [#&#8203;31786](https://github.com/quarkusio/quarkus/issues/31786) - Dev UI: `doNotEmbed` is opening a blank page instead of new window tab
-   [#&#8203;31775](https://github.com/quarkusio/quarkus/issues/31775) - java.lang.StackOverflowError
-   [#&#8203;31759](https://github.com/quarkusio/quarkus/issues/31759) - config validation fails for Optional\<List<CustomInterface>>
-   [#&#8203;31744](https://github.com/quarkusio/quarkus/issues/31744) - SROAP04005: Could not find schema class in index: java.lang.Object with smallrye-openapi &  resteasy-reactive Resource returning RestResponse\<?>
-   [#&#8203;31621](https://github.com/quarkusio/quarkus/issues/31621) - Read encrypted configuration from configuration sources
-   [#&#8203;31528](https://github.com/quarkusio/quarkus/issues/31528) - `ExtensionDescriptorMojoTest.shouldFlagMissingDependenciesInARealisticExtension` fails in Early Access JDK build
-   [#&#8203;31525](https://github.com/quarkusio/quarkus/pull/31525) - Bump Keycloak version to 21.0.1
-   [#&#8203;31521](https://github.com/quarkusio/quarkus/issues/31521) - Hibernate ORM - Document how to handle sequences in import.sql
-   [#&#8203;31492](https://github.com/quarkusio/quarkus/issues/31492) - Loadbalance for reactive mysql client
-   [#&#8203;31457](https://github.com/quarkusio/quarkus/pull/31457) - Bump smallrye-context-propagation.version from 2.0.0 to 2.1.0
-   [#&#8203;31402](https://github.com/quarkusio/quarkus/issues/31402) - Error opening config URL is ignored
-   [#&#8203;31198](https://github.com/quarkusio/quarkus/pull/31198) - Introduce CLI plugins
-   [#&#8203;31166](https://github.com/quarkusio/quarkus/pull/31166) - Make `QuarkusBuild` not pollute Gradle's build cache
-   [#&#8203;31149](https://github.com/quarkusio/quarkus/pull/31149) - Add link to 'how to write a guide' docs in create-extension template
-   [#&#8203;31071](https://github.com/quarkusio/quarkus/pull/31071) - Remove outdated relocations
-   [#&#8203;31070](https://github.com/quarkusio/quarkus/issues/31070) - Remove Maven relocations
-   [#&#8203;31011](https://github.com/quarkusio/quarkus/issues/31011) - Impossible to create a project with Maven 3.9.0
-   [#&#8203;30457](https://github.com/quarkusio/quarkus/issues/30457) - Split the actual Infinispan Client documentation Guide
-   [#&#8203;30383](https://github.com/quarkusio/quarkus/pull/30383) - Create a new base classloader including parent-first test scoped dependencies when bootstrapping for CT
-   [#&#8203;29995](https://github.com/quarkusio/quarkus/issues/29995) - Provide Git information on runtime (Alternative to SpringBoot build-info)
-   [#&#8203;27785](https://github.com/quarkusio/quarkus/issues/27785) - Integrate Redis with the Quarkus Cache
-   [#&#8203;25950](https://github.com/quarkusio/quarkus/issues/25950) - Support JSON logging for syslog
-   [#&#8203;16218](https://github.com/quarkusio/quarkus/issues/16218) - Excluded JAX-RS classes are visible in openapi
-   [#&#8203;9064](https://github.com/quarkusio/quarkus/issues/9064) - Add support for multiple SMTP servers to quarkus-mailer

</details>

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

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

##### Added

-   `gradlew equoIde` opens a repeatable clean Spotless dev environment. ([#&#8203;1523](https://github.com/diffplug/spotless/pull/1523))
-   `cleanthat` added `includeDraft` option, to include draft mutators from composite mutators. ([#&#8203;1574](https://github.com/diffplug/spotless/pull/1574))
-   `npm`-based formatters now support caching of `node_modules` directory ([#&#8203;1590](https://github.com/diffplug/spotless/pull/1590))

##### Fixed

-   `JacksonJsonFormatterFunc` handles json files with an Array as root. ([#&#8203;1585](https://github.com/diffplug/spotless/pull/1585))

##### Changes

-   Bump default `cleanthat` version to latest `2.1` -> `2.6` ([#&#8203;1569](https://github.com/diffplug/spotless/pull/1569) and [#&#8203;1574](https://github.com/diffplug/spotless/pull/1574))
-   Reduce logging-noise created by `npm`-based formatters ([#&#8203;1590](https://github.com/diffplug/spotless/pull/1590) fixes [#&#8203;1582](https://github.com/diffplug/spotless/issues/1582))

</details>

<details>
<summary>mojohaus/flatten-maven-plugin</summary>

### [`v1.5.0`](https://github.com/mojohaus/flatten-maven-plugin/releases/tag/1.5.0)

[Compare Source](https://github.com/mojohaus/flatten-maven-plugin/compare/1.4.1...1.5.0)

<!-- Optional: add a release summary here -->

#### 🚀 New features and improvements

-   Update Maven to 3.5.0 - fix for Maven 4 ([#&#8203;351](https://github.com/mojohaus/flatten-maven-plugin/pull/351)) [@&#8203;gnodet](https://github.com/gnodet)

#### 📦 Dependency updates

-   Bump jackson-databind from 2.13.4.1 to 2.13.4.2 in /src/it/projects/bom-pomElements/bom ([#&#8203;354](https://github.com/mojohaus/flatten-maven-plugin/pull/354)) [@&#8203;dependabot](https://github.com/dependabot)
-   Bump jackson-databind from 2.13.4.1 to 2.13.4.2 in /src/it/projects/bom-flattenMode/bom ([#&#8203;353](https://github.com/mojohaus/flatten-maven-plugin/pull/353)) [@&#8203;dependabot](https://github.com/dependabot)

#### 👻 Maintenance

-   Require Maven 3.5.4+ ([#&#8203;356](https://github.com/mojohaus/flatten-maven-plugin/pull/356)) [@&#8203;slachiewicz](https://github.com/slachiewicz)
-   Bump m-shade-p to 3.4.1 in flatten-shaded-drp test - fix for Maven 4 ([#&#8203;355](https://github.com/mojohaus/flatten-maven-plugin/pull/355)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski)
-   Bump jackson-databind from 2.13.4.1 to 2.13.4.2 in /src/it/projects/bom-pomElements/bom ([#&#8203;354](https://github.com/mojohaus/flatten-maven-plugin/pull/354)) [@&#8203;dependabot](https://github.com/dependabot)
-   Bump jackson-databind from 2.13.4.1 to 2.13.4.2 in /src/it/projects/bom-flattenMode/bom ([#&#8203;353](https://github.com/mojohaus/flatten-maven-plugin/pull/353)) [@&#8203;dependabot](https://github.com/dependabot)

</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
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants