Hi Rob,

Great to see these changes. I am a little confused about this change in Queue.java:

+        if (list != null) {
+ synchronized (consumers) { + for (MessageReference node : list) {
+                    Subscription target = null;
+                    List<Subscription> targets = null;
+                    for (Subscription s : consumers) {
+                        if (dispatchSelector.canSelect(s, node)) {
+                            if (!s.isFull()) {
+                                s.add(node);
+                                target = s;
+                                break;
+                            } else {
+                                if (targets == null) {
+                                    targets = new ArrayList<Subscription>();
+                                }
+                                targets.add(s);
+                            }
+                        }
+                    }
+                    if (targets != null) {

Shouldn't this if statement be?

if (target == null && targets != null)

I would have thought if you already found a matching subscriber that isn't full, then there is no need to check the list of other full subscribers that were found?

+                        // pick the least loaded to add the messag too
+ + for (Subscription s : targets) {
+                            if (target == null
+                                    || target.getInFlightUsage() > s
+                                            .getInFlightUsage()) {
+                                target = s;
+                            }
+                        }
+                        if (target != null) {
+                            target.add(node);
+                        }
+                    }

If what I said above is true, then the immediately above if statement needs to be moved outside its enclosing if - otherwise it only gets executed when targets != null. We'd want this to execute if we found a matching target wouldn't we?

--
Cheers,
David

Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia    Ph: +61 2 9280 0699
Web: http://www.nuix.com                            Fax: +61 2 9212 6902

Reply via email to