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: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org