Hi Ken,
I hadn't realised that the asynchronous python API actually had QMF2 support at 
all, I has assumed that both the original APIs were QMF1 only. I'm definitely 
learning something - though I'm not especially fond of that particular API, I 
find it a bit fiddly.

It has been a long while since I did anything with that API - how do you get 
the API to choose between QMF1 or QMF2? I know at the protocol level for QMF2 
it's a subscription to qmf.default.topic/agent.ind.* or something similar but I 
don't recall noticing how to select one protocol or the other via that API?

Frase

On 2 Apr 2013, at 14:26, Ken Giusti <kgiu...@redhat.com> wrote:

> Hi Frase,
> 
> What I saw surprised me: when I disabled v1 (via --mgmt-qmf1 no) and I ran 
> qpid-tool, qpid-tool didn't get any updates (no objects listed).
> 
> As you point out, the broker should be sending unsolicited object update 
> notifications periodically.  By default, each update message is sent in both 
> v1 and v2 format (from what I remember).  So by turning off v1, I still 
> expected the broker to send the v2 updates.
> 
> From what I could tell, the broker _was_ sending v2 updates - dumping 
> exchange statistics (qpid-stat -e) showed activity on the qmf.default.topic.  
> So why wasn't qpid-tool showing the objects (it uses the Console callback 
> method AFAIK).
> 
> Turns out there's a bug in the object update handling code in console.py.  
> See the patch in https://issues.apache.org/jira/browse/QPID-4689
> 
> From what I can tell, the console.py expects the management agent of the 
> local broker to identify itself as "broker" via the "qmf.agent" header in the 
> message.  This assumption appears to have broken: I've observed the current 
> behavior as the broker is now sending it's fully qualified agent name in the 
> "qmf.agent" field instead (this would be in the form 
> <vendor>:<product>:<instance> - in the case of the broker it would be 
> "apache.org:qpidd:<xxx>" where <xxx> defaults to the mgmt uuid.
> 
> I'm not sure when this broke, or why.  But I think the "broker" convention is 
> a left over from qmfv1 support.  With V2 the broker's agent name should be 
> that fully qualified triplet from above.
> 
> The patch changes the code to recognize either format.  Seems to work - 
> qpid-tool now reports all the objects if the broker is started with 
> --mgmt-qmf1 no.
> 
> I suspect if we ever do away with v1 support, we could probably simplify the 
> console.py code quite a bit.  I find it's current form a bit squirrelly and 
> loaded with special cases in order to support both qmf versions.
> 
> -K
> 
> ----- Original Message -----
>> From: "Fraser Adams" <fraser.ad...@blueyonder.co.uk>
>> To: users@qpid.apache.org
>> Cc: users@qpid.apache.org
>> Sent: Tuesday, April 2, 2013 3:52:44 AM
>> Subject: Re: Questions from a novice
>> 
>> 
>> 
>> On 1 Apr 2013, at 21:31, Ken Giusti <kgiu...@redhat.com> wrote:
>> 
>>> Hi Bill,
>>> 
>>> I've just tried to restrict my broker to using only qmf v2:
>>> 
>>> $ qpidd --auth no --mgmt-qmf1 no
>>> 
>>> and I no longer get update notifications from my console.py app!   From the
>>> looks of it, the console.py code is broken - the broker is generating the
>>> qmfv2 updates, but console.py is dropping them.  This is on trunk - I'll
>>> open a JIRA.
>> Ken, surely what you are observing is the correct behaviour? With QMF1 there
>> were two python APIs one (the most commonly used one) was synchronous and
>> mainly used the getObjects() calls to query for objects of a given type e.g.
>> queue, exchange, bind etc. the other API, used by I think qpid-queue-stat
>> and I think being referred to in this thread is asynchronous. The
>> asynchronous API relies on the broker data push and a subscription on a
>> given topic so if you do --mgmt-qmf1 no then the broker data push to that
>> topic, which pushes things like heartbeats and statistics updates, won't
>> occur.
>> 
>> Unless of course you are actually saying that disabling QMF1 data push
>> actually stops the QMF2 data push??? I've not checked for that - it wouldn't
>> totally surprise me as the two blocks of code in the broker are fairly
>> intertwined and it's more likely that people would use the default behaviour
>> with both QMF1 and QMF2 enabled.
>> 
>> Hmm re-reading your post you do seem to be talking about perhaps something
>> different? I am perhaps jumping to conclusions based on Bill's comments that
>> he's using QMF1?
>> 
>> Frase
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
>> For additional commands, e-mail: users-h...@qpid.apache.org
> 
> -- 
> -K
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> For additional commands, e-mail: users-h...@qpid.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
For additional commands, e-mail: users-h...@qpid.apache.org

Reply via email to