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