activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (JIRA)" <>
Subject [jira] [Commented] (AMQ-4699) Transacted producer does not throw ResourceAllocationException on error
Date Tue, 03 Sep 2013 15:58:52 GMT


Gary Tully commented on AMQ-4699:

with alwaysSyncSend the producer can get a notification but it is not clear that it makes
sense to force a rollback in this case. The commit is really commit what succeeded, not what
failed, or commit the transaction, whatever is in there.
In the async case, it is more problematic b/c the client can be unaware that all messages
are resulting in exceptions. The difficulty is tying the exception listener to the session,
at the moment it is tied to the connection, so there can be more than one session context
and more than one transaction. It would be possible to flag all transactions as 'toRollback'
but that sounds two harsh. This will need a little thought.
> Transacted producer does not throw ResourceAllocationException on error
> -----------------------------------------------------------------------
>                 Key: AMQ-4699
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.8.0
>         Environment: ActiveMQ 5.8.0 server
> ActiveMQ 5.8.0 client on Java 7
>            Reporter: Joakim von Brandis
> Using a transacted producer session, with sendFailIfNoSpace=true or sendFailIfNoSpaceAfterTimeout=timeout,
the producer gets no error on whether send() or commit(). Thus, the producer may pour out
messages in a transacted session, which are silently discarded by ActiveMQ.
> A connection exception listener will receive ResourceAllocationException, but since this
happens in another thread than the sending client, there is no guarantee that the client can
be notified in time to avoid commit().
> Without using sendFailIfNoSpace(AfterTimeout), producer is blocked until space is available,
as expected.
> The client should receive error on send() when the resource exhaustion is reported, and
in any case a commit() should not complete without error if the server has discarded any messages
in the transaction.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message