Robbie Gemmell created DISPATCH-1453:
----------------------------------------
Summary: Adding "defaultDistribution: unavailable" overrides the
regular handling of transaction coordinator link refusal
Key: DISPATCH-1453
URL: https://issues.apache.org/jira/browse/DISPATCH-1453
Project: Qpid Dispatch
Issue Type: Bug
Affects Versions: 1.9.0
Reporter: Robbie Gemmell
DISPATCH-802 added handling to refuse links to the transaction coordinator
(which has no address, but is a specific target) if a link route to e.g a
broker isnt configured (using DISPATCH-195), and help clarify the reasons for
the refusal.
DISPATCH-803 was added to provide a way for links to adressses that are
otherwise unknown to be refused rather than message routed, by setting
"defaultDistribution: unavailable". This functionality overrides the behaviour
from DISPATCH-802, making it less clear again why a transaction usage attempt
has failed.
>From a JMS client trying to create a transacted session, the failure with
>"defaultDistribution: unavailable" config present looks like:
{noformat}
javax.jms.JMSException: No route to the destination node [condition =
qd:no-route-to-dest]
at
org.apache.qpid.jms.provider.ProviderException.toJMSException(ProviderException.java:34)
at
org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:80)
at
org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:112)
at org.apache.qpid.jms.JmsConnection.createResource(JmsConnection.java:698)
at
org.apache.qpid.jms.JmsLocalTransactionContext.begin(JmsLocalTransactionContext.java:140)
at org.apache.qpid.jms.JmsSession.<init>(JmsSession.java:172)
at org.apache.qpid.jms.JmsConnection.createSession(JmsConnection.java:316)
at org.apache.qpid.jms.example.HelloWorld.main(HelloWorld.java:52)
{noformat}
While without it,the router sends a more specific error condition, and so the
failure normally looks like:
{noformat}
javax.jms.JMSException: The router can't coordinate transactions by itself, a
linkRoute to a coordinator must be configured to use transactions. [condition =
amqp:precondition-failed]
at
org.apache.qpid.jms.provider.ProviderException.toJMSException(ProviderException.java:34)
at
org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:80)
at
org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:112)
at org.apache.qpid.jms.JmsConnection.createResource(JmsConnection.java:698)
at
org.apache.qpid.jms.JmsLocalTransactionContext.begin(JmsLocalTransactionContext.java:140)
at org.apache.qpid.jms.JmsSession.<init>(JmsSession.java:172)
at org.apache.qpid.jms.JmsConnection.createSession(JmsConnection.java:316)
at org.apache.qpid.jms.example.HelloWorld.main(HelloWorld.java:52)
{noformat}
It would be nicer if the regular coordinator refusal error condition was sent
in both cases.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]