You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2010/11/09 00:46:40 UTC

svn commit: r1032788 - in /trafficserver/traffic/trunk: CHANGES proxy/mgmt2/web2/WebOverview.cc proxy/mgmt2/web2/WebOverview.h

Author: zwoop
Date: Mon Nov  8 23:46:39 2010
New Revision: 1032788

URL: http://svn.apache.org/viewvc?rev=1032788&view=rev
Log:
TS-519 Fixes for clustering that broke with stats rewrite.

Modified:
    trafficserver/traffic/trunk/CHANGES
    trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.cc
    trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.h

Modified: trafficserver/traffic/trunk/CHANGES
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/CHANGES?rev=1032788&r1=1032787&r2=1032788&view=diff
==============================================================================
--- trafficserver/traffic/trunk/CHANGES (original)
+++ trafficserver/traffic/trunk/CHANGES Mon Nov  8 23:46:39 2010
@@ -2,6 +2,9 @@
 
 Changes with Apache Traffic Server 2.1.4
 
+  *) Fixes to clustering, that caused an assert to trigger after the
+   stats changes [TS-519].
+
   *) Make the checks when to honor the Content-Length: header less
    strict, against origins without Keep-Alive [TS-507].
 

Modified: trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.cc?rev=1032788&r1=1032787&r2=1032788&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.cc (original)
+++ trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.cc Mon Nov  8 23:46:39 2010
@@ -71,11 +71,15 @@ overviewRecord::overviewRecord(unsigned 
     node_rec_data.num_recs = 0;
     node_rec_data.recs = NULL;
     recordArraySize = 0;
+    node_rec_first_ix = 0;
   } else {
     node_rec_data.num_recs = cpi->node_rec_data.num_recs;
     recordArraySize = node_rec_data.num_recs * sizeof(RecRecord);
     node_rec_data.recs = new RecRecord[recordArraySize];
     memcpy(node_rec_data.recs, cpi->node_rec_data.recs, recordArraySize);
+
+    // Recaculate the old relative index
+    RecGetRecordOrderAndId(node_rec_data.recs[0].name, &node_rec_first_ix, NULL);
   }
 
 
@@ -192,6 +196,7 @@ overviewRecord::updateStatus(time_t curr
   //  (remote nodes only)
   if (localNode == false) {
     memcpy(node_rec_data.recs, cpi->node_rec_data.recs, recordArraySize);
+    RecGetRecordOrderAndId(node_rec_data.recs[0].name, &node_rec_first_ix, NULL);
   }
 }
 
@@ -274,9 +279,9 @@ overviewRecord::readCounter(const char *
   int rec_status = REC_ERR_OKAY;
   int order = -1;
   if (localNode == false) {
-    // TODO: Not sure if this is correct now after we eliminated the relative order. Do we care?
     rec_status = RecGetRecordOrderAndId(name, &order, NULL);
     if (rec_status == REC_ERR_OKAY) {
+      order -= node_rec_first_ix; // Offset
       ink_release_assert(order < node_rec_data.num_recs);
       ink_debug_assert(order < node_rec_data.num_recs);
       rec = node_rec_data.recs[order].data.rec_counter;
@@ -300,9 +305,9 @@ overviewRecord::readInteger(const char *
   int rec_status = REC_ERR_OKAY;
   int order = -1;
   if (localNode == false) {
-    // TODO: Not sure if this is correct now after we eliminated the relative order. Do we care?
     rec_status = RecGetRecordOrderAndId(name, &order, NULL);
     if (rec_status == REC_ERR_OKAY) {
+      order -= node_rec_first_ix; // Offset
       ink_release_assert(order < node_rec_data.num_recs);
       ink_debug_assert(order < node_rec_data.num_recs);
       rec = node_rec_data.recs[order].data.rec_int;
@@ -326,9 +331,9 @@ overviewRecord::readFloat(const char *na
   int rec_status = REC_ERR_OKAY;
   int order = -1;
   if (localNode == false) {
-    // TODO: Not sure if this is correct now after we eliminated the relative order. Do we care?
     rec_status = RecGetRecordOrderAndId(name, &order, NULL);
     if (rec_status == REC_ERR_OKAY) {
+      order -= node_rec_first_ix; // Offset
       ink_release_assert(order < node_rec_data.num_recs);
       ink_debug_assert(order < node_rec_data.num_recs);
       rec = node_rec_data.recs[order].data.rec_float;
@@ -352,9 +357,10 @@ overviewRecord::readString(const char *n
   int rec_status = REC_ERR_OKAY;
   int order = -1;
   if (localNode == false) {
-    // TODO: Not sure if this is correct now after we eliminated the relative order. Do we care?
     rec_status = RecGetRecordOrderAndId(name, &order, NULL);
     if (rec_status == REC_ERR_OKAY) {
+      order -= node_rec_first_ix; // Offset
+      printf("LOCAL NAME IS %s\n", node_rec_data.recs[order].name);
       ink_release_assert(order < node_rec_data.num_recs);
       ink_debug_assert(order < node_rec_data.num_recs);
       rec = xstrdup(node_rec_data.recs[order].data.rec_string);

Modified: trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.h?rev=1032788&r1=1032787&r2=1032788&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.h (original)
+++ trafficserver/traffic/trunk/proxy/mgmt2/web2/WebOverview.h Mon Nov  8 23:46:39 2010
@@ -111,9 +111,10 @@ public:
   bool varCounterFromName(const char *varName, RecCounter * value);
 
 private:
-    RecRecords node_rec_data;   // a copy from ClusterPeerInfo
+  RecRecords node_rec_data;   // a copy from ClusterPeerInfo
   int recordArraySize;          // the size of node_data.recs
-    overviewRecord(const overviewRecord &);
+  int node_rec_first_ix; // Kludge, but store the first order ix for later use
+  overviewRecord(const overviewRecord &);
 };
 
 // information about the entire cluster