Skip to content

[3.25] getting NPE in reactive rest client #49179

@manofthepeace

Description

@manofthepeace

Describe the bug

I will provide a reproducer shortly. Just want to raise the issue first. When updating to quarkus 3.25.0 I get a NPE in ClientResponseImpl.java:26

this is the stacktrace;

2025-07-30 09:54:45,544 ERROR (vert.x-eventloop-thread-7) java.lang.NullPointerException: Cannot invoke "Object.getClass()" because the return value of "org.jboss.resteasy.reactive.client.impl.ClientResponseImpl.getEntityStream()" is null
    at org.jboss.resteasy.reactive.client.impl.ClientResponseImpl.bufferEntity(ClientResponseImpl.java:26)
    at org.acme.RestExceptionMapper.toThrowable(RestExceptionMapper.java:41)
    at org.acme.RestExceptionMapper.toThrowable(RestExceptionMapper.java:1)
    at io.quarkus.rest.client.reactive.runtime.MicroProfileRestClientResponseFilter.filter(MicroProfileRestClientResponseFilter.java:55)
    at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:21)
    at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:10)
    at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.invokeHandler(AbstractResteasyReactiveContext.java:231)
    at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
    at io.smallrye.context.impl.wrappers.SlowContextualRunnable.run(SlowContextualRunnable.java:19)
    at org.jboss.resteasy.reactive.client.handlers.ClientSwitchToRequestContextRestHandler$1$1.handle(ClientSwitchToRequestContextRestHandler.java:38)
    at org.jboss.resteasy.reactive.client.handlers.ClientSwitchToRequestContextRestHandler$1$1.handle(ClientSwitchToRequestContextRestHandler.java:35)
    at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
    at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:252)
    at io.vertx.core.impl.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
    at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
    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:1583)

This is the portion that makes it fail;

    @Override
    public RestException toThrowable(Response response) {
        response.bufferEntity();

this is in a ResponseExceptionMapper

Expected behavior

No NPE

Actual behavior

Npe makes the requests fails.

How to Reproduce?

No response

Output of uname -a or ver

Darwin Kernel Version 24.5.0

Output of java -version

21.0.8

Quarkus version or git rev

3.25.0

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

maven 3.9.10

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions