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/05/04 13:22:20 UTC

qpid-dispatch git commit: DISPATCH-57 - Added some new attributes to the address entity to provide visibility into the balanced algorithm. Also changed the format of the "peer" attribute in links to be only the numeric identity.

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 264db62f4 -> 414d34efb


DISPATCH-57 - Added some new attributes to the address entity to provide visibility into the balanced algorithm.
Also changed the format of the "peer" attribute in links to be only the numeric identity.


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

Branch: refs/heads/master
Commit: 414d34efb7e8fed964b6e324feeaf8c2a4d494dc
Parents: 264db62
Author: Ted Ross <tr...@redhat.com>
Authored: Wed May 4 09:20:58 2016 -0400
Committer: Ted Ross <tr...@redhat.com>
Committed: Wed May 4 09:20:58 2016 -0400

----------------------------------------------------------------------
 python/qpid_dispatch/management/qdrouter.json | 10 +++-
 src/router_core/agent_address.c               | 59 +++++++++++++++++-----
 src/router_core/agent_address.h               |  2 +-
 src/router_core/agent_link.c                  |  2 +-
 4 files changed, 56 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/414d34ef/python/qpid_dispatch/management/qdrouter.json
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch/management/qdrouter.json b/python/qpid_dispatch/management/qdrouter.json
index 17e3bd3..6de9b43 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -1156,9 +1156,17 @@
                     "description": "Internal unique (to this router) key to identify the address",
                     "type": "string"
                 },
-                "hostRouters": {
+                "remoteHostRouters": {
                     "type": "list",
                     "description": "List of remote routers on which there is a destination for this address."
+                },
+                "transitOutstanding": {
+                    "type": "list",
+                    "description": "List of numbers of outstanding deliveries across a transit (inter-router) link for this address.  This is for balanced distribution only."
+                },
+                "trackedDeliveries": {
+                    "type": "integer",
+                    "description": "Number of transit deliveries being tracked for this address (for balanced distribution)."
                 }
             }
         },

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/414d34ef/src/router_core/agent_address.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_address.c b/src/router_core/agent_address.c
index f4c603e..e1ca533 100644
--- a/src/router_core/agent_address.c
+++ b/src/router_core/agent_address.c
@@ -29,12 +29,14 @@
 #define QDR_ADDRESS_SUBSCRIBER_COUNT          6
 #define QDR_ADDRESS_REMOTE_COUNT              7
 #define QDR_ADDRESS_CONTAINER_COUNT           8
-#define QDR_ADDRESS_HOST_ROUTERS              9
+#define QDR_ADDRESS_REMOTE_HOST_ROUTERS       9
 #define QDR_ADDRESS_DELIVERIES_INGRESS        10
 #define QDR_ADDRESS_DELIVERIES_EGRESS         11
 #define QDR_ADDRESS_DELIVERIES_TRANSIT        12
 #define QDR_ADDRESS_DELIVERIES_TO_CONTAINER   13
 #define QDR_ADDRESS_DELIVERIES_FROM_CONTAINER 14
+#define QDR_ADDRESS_TRANSIT_OUTSTANDING       15
+#define QDR_ADDRESS_TRACKED_DELIVERIES        16
 
 const char *qdr_address_columns[] =
     {"name",
@@ -46,18 +48,21 @@ const char *qdr_address_columns[] =
      "subscriberCount",
      "remoteCount",
      "containerCount",
-     "hostRouters",
+     "remoteHostRouters",
      "deliveriesIngress",
      "deliveriesEgress",
      "deliveriesTransit",
      "deliveriesToContainer",
      "deliveriesFromContainer",
+     "transitOutstanding",
+     "trackedDeliveries",
      0};
 
 
-static void qdr_insert_address_columns_CT(qdr_address_t        *addr,
-                                          qd_composed_field_t  *body,
-                                          int column_index)
+static void qdr_insert_address_columns_CT(qdr_core_t          *core,
+                                          qdr_address_t       *addr,
+                                          qd_composed_field_t *body,
+                                          int                  column_index)
 {
     switch(column_index) {
     case QDR_ADDRESS_NAME:
@@ -100,9 +105,20 @@ static void qdr_insert_address_columns_CT(qdr_address_t        *addr,
         qd_compose_insert_uint(body, DEQ_SIZE(addr->conns));
         break;
 
-    case QDR_ADDRESS_HOST_ROUTERS:
-        qd_compose_insert_null(body);  // TEMP
+    case QDR_ADDRESS_REMOTE_HOST_ROUTERS: {
+        qd_compose_start_list(body);
+        int c;
+        int bit;
+        for (QD_BITMASK_EACH(addr->rnodes, bit, c)) {
+            qdr_node_t *rnode = core->routers_by_mask_bit[bit];
+            if (rnode && rnode->owning_addr) {
+                const char *ar = (char*) qd_hash_key_by_handle(rnode->owning_addr->hash_handle);
+                qd_compose_insert_string(body, ar + 1); // Remove the 'R' prefix from the router address
+            }
+        }
+        qd_compose_end_list(body);
         break;
+    }
 
     case QDR_ADDRESS_DELIVERIES_INGRESS:
         qd_compose_insert_ulong(body, addr->deliveries_ingress);
@@ -124,6 +140,20 @@ static void qdr_insert_address_columns_CT(qdr_address_t        *addr,
         qd_compose_insert_ulong(body, addr->deliveries_from_container);
         break;
 
+    case QDR_ADDRESS_TRANSIT_OUTSTANDING:
+        if (addr->outstanding_deliveries) {
+            qd_compose_start_list(body);
+            for (int i = 0; i < qd_bitmask_width(); i++)
+                qd_compose_insert_long(body, addr->outstanding_deliveries[i]);
+            qd_compose_end_list(body);
+        } else
+            qd_compose_insert_null(body);
+        break;
+
+    case QDR_ADDRESS_TRACKED_DELIVERIES:
+        qd_compose_insert_long(body, addr->tracked_deliveries);
+        break;
+
     default:
         qd_compose_insert_null(body);
         break;
@@ -131,7 +161,8 @@ static void qdr_insert_address_columns_CT(qdr_address_t        *addr,
 
 }
 
-static void qdr_manage_write_address_map_CT(qdr_address_t       *addr,
+static void qdr_manage_write_address_map_CT(qdr_core_t          *core,
+                                            qdr_address_t       *addr,
                                             qd_composed_field_t *body,
                                             const char          *qdr_address_columns[])
 {
@@ -139,14 +170,14 @@ static void qdr_manage_write_address_map_CT(qdr_address_t       *addr,
 
     for(int i = 0; i < QDR_ADDRESS_COLUMN_COUNT; i++) {
         qd_compose_insert_string(body, qdr_address_columns[i]);
-        qdr_insert_address_columns_CT(addr, body, i);
+        qdr_insert_address_columns_CT(core, addr, body, i);
     }
 
     qd_compose_end_map(body);
 }
 
 
-static void qdr_manage_write_address_list_CT(qdr_query_t *query, qdr_address_t *addr)
+static void qdr_manage_write_address_list_CT(qdr_core_t *core, qdr_query_t *query, qdr_address_t *addr)
 {
     qd_composed_field_t *body = query->body;
 
@@ -157,7 +188,7 @@ static void qdr_manage_write_address_list_CT(qdr_query_t *query, qdr_address_t *
 
     int i = 0;
     while (query->columns[i] >= 0) {
-        qdr_insert_address_columns_CT(addr, body, query->columns[i]);
+        qdr_insert_address_columns_CT(core, addr, body, query->columns[i]);
         i++;
     }
 
@@ -197,7 +228,7 @@ void qdra_address_get_CT(qdr_core_t          *core,
         //
         // Write the columns of the address entity into the response body.
         //
-        qdr_manage_write_address_map_CT(addr, query->body, qdr_address_columns);
+        qdr_manage_write_address_map_CT(core, addr, query->body, qdr_address_columns);
         query->status = QD_AMQP_OK;
     }
 
@@ -236,7 +267,7 @@ void qdra_address_get_first_CT(qdr_core_t *core, qdr_query_t *query, int offset)
     //
     // Write the columns of the address entity into the response body.
     //
-    qdr_manage_write_address_list_CT(query, addr);
+    qdr_manage_write_address_list_CT(core, query, addr);
 
     //
     // Advance to the next address
@@ -279,7 +310,7 @@ void qdra_address_get_next_CT(qdr_core_t *core, qdr_query_t *query)
         //
         // Write the columns of the address entity into the response body.
         //
-        qdr_manage_write_address_list_CT(query, addr);
+        qdr_manage_write_address_list_CT(core, query, addr);
 
         //
         // Advance to the next address

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/414d34ef/src/router_core/agent_address.h
----------------------------------------------------------------------
diff --git a/src/router_core/agent_address.h b/src/router_core/agent_address.h
index b47433e..36a51bc 100644
--- a/src/router_core/agent_address.h
+++ b/src/router_core/agent_address.h
@@ -31,7 +31,7 @@ void qdra_address_get_CT(qdr_core_t *core,
                       const char *qdr_address_columns[]);
 
 
-#define QDR_ADDRESS_COLUMN_COUNT 15
+#define QDR_ADDRESS_COLUMN_COUNT 17
 
 const char *qdr_address_columns[QDR_ADDRESS_COLUMN_COUNT + 1];
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/414d34ef/src/router_core/agent_link.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_link.c b/src/router_core/agent_link.c
index 9204565..3b99326 100644
--- a/src/router_core/agent_link.c
+++ b/src/router_core/agent_link.c
@@ -122,7 +122,7 @@ static void qdr_agent_write_column_CT(qd_composed_field_t *body, int col, qdr_li
         case QDR_LINK_PEER:
             if (link->connected_link) {
                 char id[100];
-                snprintf(id, 100, "link.%"PRId64, link->connected_link->identity);
+                snprintf(id, 100, "%"PRId64, link->connected_link->identity);
                 qd_compose_insert_string(body, id);
               } else
                 qd_compose_insert_null(body);


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