Actually pls ignore me my ramblings, I now realise this is a red herring :)
Tim Fox wrote:
Or perhaps I should never attempt to retry the commit, but instead
roll
it back (not sure if rollback is really necessary), then start a new
transaction, redo the work, and try and commit that?
Tim Fox wrote:
> If I have at least 2 participants enlisted in a JTA tx and call
> commit, then the commit fails, e.g. due to network problems say due to
> the XAResource being enable to contact it's server.
>
> In this case is it possible the commit fails and the TRansaction is
> left in state Status.STATUS_PREPARING?
>
> Basically I have this situation:
>
> I am have a JTA transaction where 2 JMS XAResources are enlisted
> corresponding to two different servers.
>
> I am acking some messages on one server and sending some messages on
> the other (basically this is a message bridge).
>
> If the network fails, the bridge should be able to catch exceptions
> and retry until the network comes back up.
>
> If the failure occurs during the Transaction.commit() call, then I
> only want to retry the commit if the transaction didn't get prepared,
> since if it got to the prepare stage then the transaction recovery
> (hopefully) will commit it eventually.
>
> So I am checking Transaction.getStatus() after the failure to work out
> whether to retry commit or not. Basically my assumption is I should
> retry after failure if the tx is not prepared.
>
> Is this a correct approach?
>
>
>
--
Tim Fox
JBoss Messaging Technical Lead
JBoss - a division of Red Hat
T: +44 2088006768
M: +44 7957983205
E: tim.fox(a)jboss.com tim.fox(a)redhat.com