Return-Path: X-Original-To: apmail-qpid-users-archive@www.apache.org Delivered-To: apmail-qpid-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C286AE7AA for ; Fri, 4 Jan 2013 11:13:19 +0000 (UTC) Received: (qmail 34528 invoked by uid 500); 4 Jan 2013 11:13:19 -0000 Delivered-To: apmail-qpid-users-archive@qpid.apache.org Received: (qmail 34453 invoked by uid 500); 4 Jan 2013 11:13:18 -0000 Mailing-List: contact users-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@qpid.apache.org Delivered-To: mailing list users@qpid.apache.org Received: (qmail 34423 invoked by uid 99); 4 Jan 2013 11:13:17 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Jan 2013 11:13:17 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of fraser.adams@blueyonder.co.uk designates 81.103.221.48 as permitted sender) Received: from [81.103.221.48] (HELO mtaout02-winn.ispmail.ntl.com) (81.103.221.48) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Jan 2013 11:13:08 +0000 Received: from know-smtpout-1.server.virginmedia.net ([62.254.123.2]) by mtaout02-winn.ispmail.ntl.com (InterMail vM.7.08.04.00 201-2186-134-20080326) with ESMTP id <20130104111247.JNNR17200.mtaout02-winn.ispmail.ntl.com@know-smtpout-1.server.virginmedia.net> for ; Fri, 4 Jan 2013 11:12:47 +0000 Received: from [82.33.33.147] (helo=[192.168.1.101]) by know-smtpout-1.server.virginmedia.net with esmtpa (Exim 4.63) (envelope-from ) id 1Tr5BD-0005b7-A8 for users@qpid.apache.org; Fri, 04 Jan 2013 11:11:15 +0000 Message-ID: <50E6B8D2.4000002@blueyonder.co.uk> Date: Fri, 04 Jan 2013 11:11:14 +0000 From: Fraser Adams User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: users@qpid.apache.org Subject: Re: QMF dead to new requests after invoking some create calls References: <1780103952.23591302.1357240686946.JavaMail.root@redhat.com> In-Reply-To: <1780103952.23591302.1357240686946.JavaMail.root@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Cloudmark-Analysis: v=1.1 cv=AUhbpHVS+xhHrj9wLCYAQoYnFLYUZdbP8UM0GmH2jwk= c=1 sm=0 a=uBsBa1gr-CYA:10 a=0Mv_noS7GscA:10 a=3NElcqgl2aoA:10 a=IkcTkHD0fZMA:10 a=RrUDmkijQ-gYoUIY2rYA:9 a=QEXdDO2ut3YA:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 X-Virus-Checked: Checked by ClamAV on apache.org On 03/01/13 19:18, Ken Giusti wrote: > Hi Fraser, > > I think the fix for this bug is to prevent the headers exchange from allowing multiple bindings with the same keys. > > In that case, when entering the following commands: > > qpid-config bind amq.match test f1 all k1=v1 > qpid-config bind amq.match test f1 any k1=v1 > > the second qpid-config command would fail (binding already in use). Yes I agree I think that the second command *should* fail as the /[/] combination is the same for both and it's that combination of names that are used internally. At least for 0.12 duplicates are accepted without QMF sending an exception (unlike for adding queues or exchanges where an exception "object already exists " gets reported by by the invokeMethod response). > I think that - for headers exchanges - the binding key isn't really used beyond identifying the binding (so you can eventually delete it). I personally encourage the use of a binding key for the headers exchange, you are correct that it is optional and it looks as though if you add a single binding without a key you can actually add it and delete it, but having an explicit key helps add clarity IMHO - I generally use descriptive keys that relate to what the binding is trying to achieve. > So you could get the same behavior doing: > > qpid-config bind amq.match test f1 all k1=v1 > qpid-config bind amq.match test f2 any k1=v1 > > instead. At least that is what I remember - it's been awhile. What do you think? Yes with different keys it's possible to add an any and an all match, though the former then becomes redundant. If you then do qpid-config bind amq.match test f3 all k1=v1 so basically add a duplicate binding but with a different key it doesn't get added (silently). I think that not adding it is probably the right thing to do, but I don't like it silently failing I think an exception should be sent back. There's definitely plenty of inconsistency though, I've just tried adding bindings to an xml exchange, but if I add two bindings with keys f1 and f2 with the same xquery they get added - this is largely equivalent to adding headers bindings with the same k/v properties, which as said above doesn't get added, so that seems inconsistent. What's even weirder is if I try to add another xml binding with key f1 but with a different xquery that binding doesn't get added (silently) but I don't get "error Detected two management objects with the same identifier:" from the broker, which suggests that for the xml exchange some sort of test is being done on the overall key (unlike the case for the headers exchange) but an exception isn't being reported back. >> Hopefully my Qpid GUI will be in a releasable state in the next couple >> of days, I'm currently going through some final bugs & snags and a >> little bit of work to get it looking nice on mobile browsers. > Very cool! Have you tried running it against 0.20 release candidate qpidd? Should work fine, but it's always nice to get extra exposure before we cut the release. > > -K > It's looking pretty good now, it's quite flashy with iOS style animated page transitions. It's basically a single page web-app using AJAX to update the state. What I've done is write a Java Qpid REST API bridging to my QMF2 implementation then on the JavaScript side I've written a QMF API wrapper to the REST API, so my core JavaScript GUI code actually talks the QMF2 API. I did it that way 'cause it provides much cleaner abstraction. At the moment the bridge is pure REST/HTTP but I might extend that in the future to use WebSockets, I've not done that yet as a) I've not got much Web Socket experience and b) it has poorer cross-browser support. At the moment by GUI runs on everything from IE6 up to modern mobile browsers. The main bit of styling I've yet to do is to do a bit of "real-estate adjustment" for small displays like iPhone - it's currently got a sidebar a la iPad which needs to be hidden on smaller devices. Nearly there though :-) I've not tried it with anything later than 0.12 yet. Unfortunately every time I've upgraded qpid version I've needed to fight the makefile. I noticed that Gordon Sim has incorporated a patch I did for the makefile into 0.20 so hopefully that pain will go away shortly. I'll give it a whirl with 0.20 before I release. I *hope* nothing breaks. It *should* be OK unless anyone has messed around with the QMF2 logic??? I recall between 0.8 and 0.10 there was a change to QMF Events where they started to get sent as AMQP lists from 0.10 unfortunately amqp lists don't map terribly well to JMS and I ended up using some of Gordon's code that used the low-level AMQP decodes. So unless anyone has been messing around with mappings from AMQP list to JMS it should just work. I'm off to write some more code now :-) Frase --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For additional commands, e-mail: users-help@qpid.apache.org