Bug 1070901 - invalid reply-to conversion from 1.0 to 0.10
Summary: invalid reply-to conversion from 1.0 to 0.10
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: Development
Hardware: Unspecified
OS: Unspecified
Target Milestone: 3.1
: ---
Assignee: Gordon Sim
QA Contact: Matej Lesko
Depends On:
TreeView+ depends on / blocked
Reported: 2014-02-27 16:49 UTC by Petr Matousek
Modified: 2015-04-14 13:47 UTC (History)
4 users (show)

Fixed In Version: qpid-cpp-0.30-2
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2015-04-14 13:47:35 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Priority Status Summary Last Updated
Apache JIRA QPID-5708 None None None Never
Red Hat Product Errata RHEA-2015:0805 normal SHIPPED_LIVE Red Hat Enterprise MRG Messaging 3.1 Release 2015-04-14 17:45:54 UTC

Description Petr Matousek 2014-02-27 16:49:36 UTC
Description of problem:

When converting from 1.0 to 0-10, the reply to node is checked to figure out how to treat the name (whether it is a queue or an exchange). If the node refers to neither a known queue nor exchange then the resulting reply-to will be empty.

This is correct so far, but there is a suffix ';{node:{type:queue}' added to the empty string (if the node does not exist) which finally results in reply-to field set to ";{node:{type:queue}", which is probably not intended.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. spout --reply-to "non-existing-node"  --connection-options "{protocol:amqp1.0}" "queue;{create:always}"
2. drain queue
3. the reply-to field lists ';{node:{type:queue}}'

Actual results:
the reply-to field lists ';{node:{type:queue}}'

Expected results:
the reply-to field lists ''

Additional info:

# /usr/share/examples/messaging/spout --reply-to "non-existing-node" "queue;{create:always}" --connection-options "{protocol:amqp1.0}"
# ./qc2_drain queue --log-msg-dict
{'redelivered': False, 'reply-to': ';{node:{type:queue}}', 'subject': None, 'content_type': None, 'id': None, 'user_id': 'guest', 'correlation_id': None, 'priority': None, 'durable': False, 'ttl': 0, 'properties': {'spout-id': 'a58bb494-f1d8-448a-a8de-90a18eb0235c:0'}, 'content': None}

Comment 1 Gordon Sim 2014-04-16 17:29:44 UTC
This is a client side issue. The client sets the type of the address to be 'queue' when it sees the empty string as the exchange (i.e. the default exchange in 0-10 terms). If you test the reply to, then it returns false (e.g. if ( msg.getReplyTo()) std::cout << msg.getReplyTo; #won't print anything in this case), but the type can also be left unset, which is nicer.

Comment 2 Gordon Sim 2014-04-16 19:28:54 UTC
Fixed upstream: https://svn.apache.org/r1588004

Comment 4 Matej Lesko 2014-12-03 14:18:43 UTC
Tested with qpid-cpp-0.30-4:

--reply-to "non-existing-node" "queue;{create:always}" --connection-options "{protocol:amqp1.0}"

./qc2_drain queue --log-msgs dict
{'redelivered': False, 'reply_to': None, 'subject': None, 'content_type': None, 'id': None, 'user_id': None, 'correlation_id': None, 'priority': 0, 'durable': False, 'ttl': 0.000000e+00, 'size': None, 'properties': {'spout-id': '37badeb6-a82a-4b5e-86b1-369b40a88131:0'}, 'content': None}

Comment 6 errata-xmlrpc 2015-04-14 13:47:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.