> On June 16, 2014, 4:29 p.m., Alan Conway wrote: > > Unfortunately proton and dispatch both use '#' to mean something different. > > Subscribing to '#' invokes the AMQP 1.0 "dynamic address" feature. > > > > proton-c/src/messenger/messenger.c:1545: if (pn_streq(name, "#")) { > > > > This is sort of but not exactly like the use of # to generate UUIDs in > > qpid. It does create a unique and temporary address but using an AMQP 1.0 > > specific mechanism, whereas the qpid # -> UUID works over 0-10 as well. > > > > I'm not sure we want to add the UUID feature to proton, but we probably do > > want the # convention to work sensibly and consistently across the various > > clients & brokers - i.e. it always means "make me a temporary address" and > > works consistently regardless of whether it is using AMQP 1.0 dynamic > > addresses or UUIDs over 0-10 as the implementation. Needs thought. > > > > Pavel Moravec wrote: > The fix is in native Python client, i.e. AMQP 0-10 relevant only. Where > the aim is to make Python client to behave like C++ client (over 0-10). > > For me, I don't see a big issue from 0-10 providing a different temporary > node name than 1.0 does so. Till a client requesting such an address is able > to get the node name via proper API, the client does not care what the name > looks like - I suppose.
I agree. - Alan ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/22630/#review45768 ----------------------------------------------------------- On June 16, 2014, 12:35 p.m., Pavel Moravec wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/22630/ > ----------------------------------------------------------- > > (Updated June 16, 2014, 12:35 p.m.) > > > Review request for qpid, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael > Schloming. > > > Bugs: QPID-5823 > https://issues.apache.org/jira/browse/QPID-5823 > > > Repository: qpid > > > Description > ------- > > The easiest "solution" would be to do the "mangling" in parse_address method > in driver.py (see original https://svn.apache.org/r1602820 I reverted). That > prevents any application to get proper node address ('#' expanded). > > So the '#' expansion needs to be done in endpoints.py and the information > "address is expanded" needs to be passed to parse_address method. Either > using [Sender|Receiver].mangled boolean (like in attached patch) or > Sender.target / Receiver.source could be a double (address_string, mangled), > like _mangle method returns in the patch. I don't know what approach (or some > combination) is better. > > > FYI C++ client has similar code: > > if (qpid::messaging::AddressImpl::isTemporary(a) && > createPolicy.isVoid()) { > createPolicy = "always"; > Opt specified = Opt(a)/NODE/X_DECLARE; > if (!specified.hasKey(AUTO_DELETE)) autoDelete = true; > if (!specified.hasKey(EXCLUSIVE)) exclusive = true; > } > > where isTemporary(a)==true iff node name starts with '#'. > > > Diffs > ----- > > /trunk/qpid/python/qpid/messaging/driver.py 1602841 > /trunk/qpid/python/qpid/messaging/endpoints.py 1602841 > > Diff: https://reviews.apache.org/r/22630/diff/ > > > Testing > ------- > > Automated tests passed. > > Manual test passed as well: > > $ drain "#q; {node: {durable:true}}" -t 2 & qpid-stat -q > [1] 25174 > c17af530-6cd8-462d-b8e8-5e4b6c9d50f8#q; {node: {durable:true}} > Queues > queue dur autoDel excl msg msgIn > msgOut bytes bytesIn bytesOut cons bind > > ========================================================================================================================= > af192c4d-b2a0-47c3-8dd4-e99f400da51d:0.0 Y Y 0 0 > 0 0 0 0 1 2 > c17af530-6cd8-462d-b8e8-5e4b6c9d50f8#q Y Y Y 0 0 > 0 0 0 0 1 1 > $ > > (the same for spout) > > receiver / producer is able to print expanded address (see the > "c17af530-6cd8-462d-b8e8-5e4b6c9d50f8#q; {node: {durable:true}}" line). > > > Thanks, > > Pavel Moravec > >