Skip to content

AMQP connector - BackPressureFailure with OnOverflow.Strategy.NONE #3084

@jenrg

Description

@jenrg

I have an Emitter defined like this:

@OnOverflow(OnOverflow.Strategy.NONE)
@Inject @Channel( "utility-amqp" )
Emitter<String> utilityEmitter;

The channel is outgoing using AMQP connector and the target is an address in external ActiveMQ Artemis broker.

If I have understood correctly, with OnOverflow.Strategy.NONE there is no buffer and the Emitter will always send the message without worrying about backpressure. However, if the Artemis broker is restarted and the connection lost, upon reconnect the Emitter fails with io.smallrye.mutiny.subscription.BackPressureFailure: Buffer full, cannot emit item. How is this possible? Looks like the overflow strategy is ignored after reconnect.

EDIT: Forgot to add that it stays stuck like that forever until restart even if the broker is reconnected.

Relevant parts of log:

ERROR [io.smallrye.reactive.messaging.amqp] (vert.x-eventloop-thread-0) SRMSG16214: AMQP Connection failure: java.lang.Exception: Connection disconnected

INFO [io.smallrye.reactive.messaging.amqp] (pool-12-thread-1) SRMSG16212: Establishing connection with AMQP broker

ERROR [io.smallrye.reactive.messaging.amqp] (vert.x-eventloop-thread-6) SRMSG16215: Unable to connect to the broker, retry will be attempted: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused:

INFO [io.smallrye.reactive.messaging.amqp] (pool-12-thread-1) SRMSG16212: Establishing connection with AMQP broker
INFO [io.smallrye.reactive.messaging.amqp] (vert.x-eventloop-thread-6) SRMSG16213: Connection with AMQP broker established

ERROR [io.vertx.core.impl.ContextImpl] (vert.x-eventloop-thread-7) Unhandled exception: java.lang.IllegalStateException: send not allowed after the sender is closed.

ERROR [io.smallrye.reactive.messaging.amqp] (EJB default - 1) SRMSG16225: Failure reported for channel utility-amqp, closing client: io.smallrye.mutiny.subscription.BackPressureFailure: Buffer full, cannot emit item

java.lang.Exception: Missing onFailure/onError handler in the subscriber
Caused by: io.smallrye.mutiny.subscription.BackPressureFailure: Buffer full, cannot emit item

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions