Hello Ted,
You say "They delete themselves when the address is no longer in use". In my reduced test case, the dispatch router is alone and there are no consumers/producers attached to it. Shouldn't it be deleted then? As for the "why you want to delete the operational addresses", we wanted a way to monitor the traffic on the dispatch router and debug how messages are traversing across the router every time we send messages. In the Java Broker, when you delete a queue, its statistics are gone and reset when you recreate it. We were expecting the same thing here. In my tests, at the start of each run, we delete/re-create all queues on the brokers and we do the same on the dispatch router(We delete/re-create using qdmanage all needed connectors, listeners, addresses and autoLinks). Then we send messages to the dispatch router twice (Once using JMS producers and once using Proton-c producers). If I sent 3 messages in each run, I want to verify that the router received 3 messages on the "In" and redirected them to the "out". At the start of each run and because we delete the addresses on the dispatch router, we would except the stats to be reset. However for the second run (Proton-c), I end up with 6 messages (3 old ones + 3 new ones) and I cannot assert the dispatch router has just received 3 messages. As a workaround, I am calculating the difference in the number of messages between the end and the start of each test run. However, as stated before, the behavior is not similar to the Qpid Java Broker and at the start I was convinced my producers were really sending 6 messages and not 3. In my opinion, in a multi-component system, it would make it easier if every component behaved the same way. So if a queue deletion on the Broker would delete its statistics, I would expect the same behavior on the router. What do you think? Is there really any usefulness to keep stats of a deleted addresses? Regards, Adel ________________________________ From: Ted Ross <[email protected]> Sent: Friday, September 30, 2016 2:38 PM To: [email protected] Subject: Re: [Dispatch router 0.6.1] Configuration bugs Adel, There are actually two separate entity types for addresses: The 'router.config.address' and the 'router.address'. The config address is the one that is driven by the config file and the one that you create and delete using qdmanage. router.config.address is a lookup for how addresses are supposed to be treated when they appear on the network. The other type: router.address, is the one that is shown with qdstat -a. This is a table of addresses seen on the network. Entries in this table can't be deleted manually. They delete themselves when the address is no longer in use (i.e. no producers or consumers on the local router and no consumers on reachable remote routers). I think we should step back and talk about why you want to delete the operational addresses. Do you have requirements around the gathering of statistics? -Ted On 09/30/2016 05:57 AM, Adel Boutros wrote: > Hello again, > > > Now to the next issue: I can see the "name attribute in the query but I > cannot delete the address (It still appears in "qdstat -a") > > > Steps to reproduce using the same router configuration below: > > > qdstat -b amqp://localhost:10801 -a > > > Router Addresses > class addr phs distrib in-proc local remote > cntnr in out thru to-proc from-proc > > ============================================================================== > mobile testQueue 1 balanced 0 0 0 0 > 0 0 0 0 0 > mobile testQueue 0 balanced 0 1 0 0 > 0 0 0 0 0 > ------------------------------------------------------------- > > qdmanage -b amqp://localhost:10801 query --type=address > [ > { > "name": "testQueue.addr", > "ingressPhase": 0, > "prefix": "testQueue", > "waypoint": true, > "distribution": "balanced", > "type": "org.apache.qpid.dispatch.router.config.address", > "identity": "1", > "egressPhase": 1 > } > ] > -------------------------------- > > qdmanage -b amqp://localhost:10801 delete --type=address --name testQueue.addr > --------------------------------- > > qdmanage -b amqp://localhost:10801 query --type=address > [] > ------------------------------- > > qdstat -b amqp://localhost:10801 -a > > > Router Addresses > class addr phs distrib in-proc local remote > cntnr in out thru to-proc from-proc > > ============================================================================== > mobile testQueue 1 balanced 0 0 0 0 > 0 0 0 0 0 > mobile testQueue 0 balanced 0 1 0 0 > 0 0 0 0 0 > > > Regards, > > Adel > > > ________________________________ > From: Adel Boutros <[email protected]> > Sent: Friday, September 30, 2016 11:30 AM > To: [email protected] > Subject: Re: [Dispatch router 0.6.1] Configuration bugs > > Thank you Gordon!! > > > I manually applied the commit of DISPATCH-500 and tested it on top of 0.6.1 > version and it solved my issue. > > > Regards, > > Adel > > ________________________________ > From: Gordon Sim <[email protected]> > Sent: Friday, September 30, 2016 10:12:23 AM > To: [email protected] > Subject: Re: [Dispatch router 0.6.1] Configuration bugs > > On 30/09/16 08:59, Adel Boutros wrote: >> Hello, >> >> >> As a follow up to my previous thread, I am having some issues with the >> dispatch router. >> >> I will start with the first one here: >> >> It seems the "name" attribute doesn't work for all types of entities. So, I >> cannot delete them using the "name" attribute. > > I think this may be https://issues.apache.org/jira/browse/DISPATCH-500, > which is now fixed on master. > >> I have tested it on 4 types of entities and here are my findings: >> >> * Connector --> It works >> >> * Listener --> It works >> >> * Address --> It fails >> >> * AutoLink --> It fails >> >> >> With the below config, when I query the dispatch router, it doesn't show the >> "name" attribute for my "address": >> >> >> qdmanage -b amqp://localhost:10801 query --type=address >> [ >> { >> "egressPhase": 1, >> "ingressPhase": 0, >> "prefix": "testQueue", >> "waypoint": true, >> "distribution": "balanced", >> "type": "org.apache.qpid.dispatch.router.config.address", >> "identity": "1" >> } >> ] >> >> qdmanage -b amqp://localhost:10801 query --type=listener >> [ >> { >> "stripAnnotations": "both", >> "addr": "0.0.0.0", >> "requireSsl": false, >> "idleTimeoutSeconds": 16, >> "saslMechanisms": "ANONYMOUS", >> "maxFrameSize": 16384, >> "requireEncryption": false, >> "host": "127.0.0.1", >> "cost": 1, >> "role": "normal", >> "authenticatePeer": false, >> "type": "org.apache.qpid.dispatch.listener", >> "port": "10801", >> "identity": "listener/127.0.0.1:10801:mainListener", >> "name": "mainListener" >> } >> ] >> >> >> ----------------------------------------------------------- >> Router config: >> router { >> mode: interior >> routerId: router.10801 >> } >> >> listener { >> name: mainListener >> addr: 0.0.0.0 >> port: 10801 >> role: normal >> saslMechanisms: ANONYMOUS >> requireSsl: no >> authenticatePeer: no >> } >> >> address { >> name: testQueue.addr >> prefix: testQueue >> waypoint: yes >> } >> >> >> Regards, >> >> Adel >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
