You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2016/01/29 22:13:01 UTC

[4/4] qpid-dispatch git commit: DISPATCH-179 - Fixed bugs in the message trace and closest-delivery. The 6-node configuration now stabilizes normally.

DISPATCH-179 - Fixed bugs in the message trace and closest-delivery.
               The 6-node configuration now stabilizes normally.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/af71e018
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/af71e018
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/af71e018

Branch: refs/heads/tross-DISPATCH-179-1
Commit: af71e01826aa569cb839b98189783366ae91f38f
Parents: b6ef1c3
Author: Ted Ross <tr...@redhat.com>
Authored: Fri Jan 29 16:11:38 2016 -0500
Committer: Ted Ross <tr...@redhat.com>
Committed: Fri Jan 29 16:11:38 2016 -0500

----------------------------------------------------------------------
 src/router_core/forwarder.c | 11 +++++++++--
 src/router_core/transfer.c  |  7 ++++++-
 src/router_node.c           | 10 +++++++---
 3 files changed, 22 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/af71e018/src/router_core/forwarder.c
----------------------------------------------------------------------
diff --git a/src/router_core/forwarder.c b/src/router_core/forwarder.c
index c66721c..fc3f4c1 100644
--- a/src/router_core/forwarder.c
+++ b/src/router_core/forwarder.c
@@ -302,11 +302,18 @@ int qdr_forward_closest_CT(qdr_core_t      *core,
     // TODO - presently, this picks one remote link to send to.  This needs
     //        to be enhanced so it properly chooses the route to the closest destination.
     //
-    int router_bit;
+    int         router_bit;
+    qdr_node_t *next_node;
+
     if (qd_bitmask_first_set(addr->rnodes, &router_bit)) {
         qdr_node_t *rnode = core->routers_by_mask_bit[router_bit];
         if (rnode) {
-            out_link = control ? rnode->peer_control_link : rnode->peer_data_link;
+            if (rnode->next_hop)
+                next_node = rnode->next_hop;
+            else
+                next_node = rnode;
+
+            out_link = control ? next_node->peer_control_link : next_node->peer_data_link;
             if (out_link) {
                 out_delivery = qdr_forward_new_delivery_CT(core, in_delivery, out_link, msg);
                 qdr_forward_deliver_CT(core, out_link, out_delivery);

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/af71e018/src/router_core/transfer.c
----------------------------------------------------------------------
diff --git a/src/router_core/transfer.c b/src/router_core/transfer.c
index 6bda6ad..461fa01 100644
--- a/src/router_core/transfer.c
+++ b/src/router_core/transfer.c
@@ -323,7 +323,12 @@ static void qdr_link_deliver_CT(qdr_core_t *core, qdr_action_t *action, bool dis
         //
         // The fanout is greater than one.  Do something!  TODO
         //
-        printf("TODO fanout > 1\n");
+
+        if (presettled) {
+            qdr_link_issue_credit_CT(core, link, 1);
+            assert(!dlv->peer);
+            qdr_delivery_free(dlv);
+        }
     }
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/af71e018/src/router_node.c
----------------------------------------------------------------------
diff --git a/src/router_node.c b/src/router_node.c
index c63c342..967c2ec 100644
--- a/src/router_node.c
+++ b/src/router_node.c
@@ -162,13 +162,14 @@ static qd_field_iterator_t *router_annotate_message(qd_router_t       *router,
             qd_parsed_field_t *trace_item = qd_parse_sub_value(trace, idx);
             while (trace_item) {
                 qd_field_iterator_t *iter = qd_parse_raw(trace_item);
-                qd_field_iterator_reset(iter);
+                qd_address_iterator_reset_view(iter, ITER_VIEW_ALL);
                 qd_compose_insert_string_iterator(trace_field, iter);
                 idx++;
                 trace_item = qd_parse_sub_value(trace, idx);
             }
         }
     }
+
     qd_compose_insert_string(trace_field, node_id);
     qd_compose_end_list(trace_field);
     qd_message_set_trace_annotation(msg, trace_field);
@@ -497,8 +498,11 @@ static int router_outbound_opened_handler(void *type_context, qd_connection_t *c
 static int router_closed_handler(void *type_context, qd_connection_t *conn, void *context)
 {
     qdr_connection_t *qdrc = (qdr_connection_t*) qd_connection_get_context(conn);
-    qdr_connection_closed(qdrc);
-    qd_connection_set_context(conn, 0);
+
+    if (qdrc) {
+        qdr_connection_closed(qdrc);
+        qd_connection_set_context(conn, 0);
+    }
 
     return 0;
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org