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/10/29 23:26:56 UTC

svn commit: r1028908 - in /trafficserver/traffic/trunk/proxy: InkAPI.cc http2/HttpConfig.h http2/HttpConnectionCount.cc http2/HttpSM.cc http2/HttpServerSession.cc http2/HttpTransact.cc

Author: zwoop
Date: Fri Oct 29 21:26:55 2010
New Revision: 1028908

URL: http://svn.apache.org/viewvc?rev=1028908&view=rev
Log:
TS-501 Fixes for stats around origin counter

This could potentially break in certain conditions, and also not
particularly efficiently done anyways (since it mixes the per
thread stats with the global stats).

Modified:
    trafficserver/traffic/trunk/proxy/InkAPI.cc
    trafficserver/traffic/trunk/proxy/http2/HttpConfig.h
    trafficserver/traffic/trunk/proxy/http2/HttpConnectionCount.cc
    trafficserver/traffic/trunk/proxy/http2/HttpSM.cc
    trafficserver/traffic/trunk/proxy/http2/HttpServerSession.cc
    trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc

Modified: trafficserver/traffic/trunk/proxy/InkAPI.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/InkAPI.cc?rev=1028908&r1=1028907&r2=1028908&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/InkAPI.cc (original)
+++ trafficserver/traffic/trunk/proxy/InkAPI.cc Fri Oct 29 21:26:55 2010
@@ -6544,6 +6544,7 @@ INKHttpCurrentIdleClientConnectionsGet(i
 {
   int64 total = 0;
   int64 active = 0;
+
   HTTP_READ_DYN_SUM(http_current_client_connections_stat, total);
   HTTP_READ_DYN_SUM(http_current_active_client_connections_stat, active);
 
@@ -6559,6 +6560,7 @@ int
 INKHttpCurrentCacheConnectionsGet(int *num_connections)
 {
   int64 S;
+
   HTTP_READ_DYN_SUM(http_current_cache_connections_stat, S);
   *num_connections = (int) S;
   return 1;
@@ -6569,7 +6571,7 @@ INKHttpCurrentServerConnectionsGet(int *
 {
   int64 S;
 
-  HTTP_READ_DYN_SUM(http_current_server_connections_stat, S);
+  HTTP_READ_GLOBAL_DYN_SUM(http_current_server_connections_stat, S);
   *num_connections = (int) S;
   return 1;
 }

Modified: trafficserver/traffic/trunk/proxy/http2/HttpConfig.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpConfig.h?rev=1028908&r1=1028907&r2=1028908&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpConfig.h (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpConfig.h Fri Oct 29 21:26:55 2010
@@ -306,31 +306,19 @@ enum
 extern RecRawStatBlock *http_rsb;
 
 /* Stats should only be accessed using these macros */
+#define HTTP_INCREMENT_DYN_STAT(x) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, 1);
+#define HTTP_DECREMENT_DYN_STAT(x) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, -1);
+#define HTTP_SUM_DYN_STAT(x, y) RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, (int) y);
+#define HTTP_SUM_GLOBAL_DYN_STAT(x, y) RecIncrGlobalRawStatSum(http_rsb,x,y)
 
-#define HTTP_SET_DYN_STAT(x,C, S) \
-do { \
-        RecSetRawStatSum(http_rsb, x, S); \
-        RecSetRawStatCount(http_rsb, x, C); \
-} while (0);
-#define HTTP_INCREMENT_DYN_STAT(x) \
-        RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, 1);
-#define HTTP_DECREMENT_DYN_STAT(x) \
-        RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, -1);
-#define HTTP_SUM_DYN_STAT(x, y) \
-        RecIncrRawStat(http_rsb, mutex->thread_holding, (int) x, (int) y);
-#define HTTP_SUM_GLOBAL_DYN_STAT(x, y) \
-        RecIncrGlobalRawStatSum(http_rsb,x,y)
 #define HTTP_CLEAR_DYN_STAT(x) \
 do { \
         RecSetRawStatSum(http_rsb, x, 0); \
         RecSetRawStatCount(http_rsb, x, 0); \
 } while (0);
-#define HTTP_READ_DYN_STAT(x, C, S)             \
-  RecGetRawStatCount(http_rsb, (int) x, &C);    \
-  RecGetRawStatSum(http_rsb, (int) x, &S);
 
-#define HTTP_READ_DYN_SUM(x, S)             \
-  RecGetRawStatSum(http_rsb, (int) x, &S);
+#define HTTP_READ_DYN_SUM(x, S) RecGetRawStatSum(http_rsb, (int)x, &S); // This aggregates threads too
+#define HTTP_READ_GLOBAL_DYN_SUM(x, S) RecGetGlobalRawStatSum(http_rsb, int(x), &S)
 
 #define HTTP_ConfigReadInteger         REC_ConfigReadInteger
 #define HTTP_ConfigReadString          REC_ConfigReadString

Modified: trafficserver/traffic/trunk/proxy/http2/HttpConnectionCount.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpConnectionCount.cc?rev=1028908&r1=1028907&r2=1028908&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpConnectionCount.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpConnectionCount.cc Fri Oct 29 21:26:55 2010
@@ -24,7 +24,5 @@
 #include "HttpConnectionCount.h"
 
 
-ConnectionCount *
-  ConnectionCount::_connectionCount = NULL;
-ink_mutex
-  ConnectionCount::_mutex;
+ConnectionCount *ConnectionCount::_connectionCount = NULL;
+ink_mutex ConnectionCount::_mutex;

Modified: trafficserver/traffic/trunk/proxy/http2/HttpSM.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpSM.cc?rev=1028908&r1=1028907&r2=1028908&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpSM.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpSM.cc Fri Oct 29 21:26:55 2010
@@ -2882,8 +2882,7 @@ HttpSM::tunnel_handler_server(int event,
 
     ink_assert(p->vc_type == HT_HTTP_SERVER);
     if (is_http_server_eos_truncation(p)) {
-      Debug("http", "[%lld] [HttpSM::tunnel_handler_server] "
-            "aborting cache writes due to server truncation", sm_id);
+      Debug("http", "[%lld] [HttpSM::tunnel_handler_server] aborting cache writes due to server truncation", sm_id);
       tunnel.abort_cache_write_finish_others(p);
       t_state.current.server->abort = HttpTransact::ABORTED;
       if (t_state.http_config_param->log_spider_codes) {
@@ -4356,13 +4355,14 @@ HttpSM::do_http_server_open(bool raw)
   // Atomically read the current number of connections and check to see
   // if we have gone above the max allowed.
   if (t_state.http_config_param->server_max_connections > 0) {
-    int64 Count, Sum;
-    HTTP_READ_DYN_STAT(http_current_server_connections_stat, Count, Sum);
+    int64 sum;
+
+    HTTP_READ_GLOBAL_DYN_SUM(http_current_server_connections_stat, sum);
     // Note that there is a potential race condition here where
     // the value of the http_current_server_connections_stat gets changed
     // between the statement above and the check below.
     // If this happens, we might go over the max by 1 but this is ok.
-    if (Sum >= t_state.http_config_param->server_max_connections) {
+    if (sum >= t_state.http_config_param->server_max_connections) {
       ink_debug_assert(pending_action == NULL);
       pending_action = eventProcessor.schedule_in(this, HRTIME_MSECONDS(100));
       httpSessionManager.purge_keepalives();

Modified: trafficserver/traffic/trunk/proxy/http2/HttpServerSession.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpServerSession.cc?rev=1028908&r1=1028907&r2=1028908&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpServerSession.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpServerSession.cc Fri Oct 29 21:26:55 2010
@@ -98,7 +98,7 @@ HttpServerSession::new_connection(NetVCo
   con_id = ink_atomic_increment64((int64 *) (&next_ss_id), 1);
 
   magic = HTTP_SS_MAGIC_ALIVE;
-  HTTP_INCREMENT_DYN_STAT(http_current_server_connections_stat);
+  HTTP_SUM_GLOBAL_DYN_STAT(http_current_server_connections_stat, 1); // Update the true global stat
   HTTP_INCREMENT_DYN_STAT(http_total_server_connections_stat);
   // Check to see if we are limiting the number of connections
   // per host
@@ -148,13 +148,8 @@ HttpServerSession::do_io_close(int alerr
   Debug("http_ss", "[%lld] session closed", con_id);
   server_vc = NULL;
 
-//  Have to a taken mutex to use normal stat stuff now, we don't
-//    so use funny macros here....
-//    HTTP_DECREMENT_DYN_STAT(http_current_server_connections_stat);
-//    HTTP_SUM_DYN_STAT(http_transactions_per_server_con, transact_count);
-
-  HTTP_SUM_GLOBAL_DYN_STAT(http_current_server_connections_stat, -1);
-  HTTP_SUM_GLOBAL_DYN_STAT(http_transactions_per_server_con, transact_count);
+  HTTP_SUM_GLOBAL_DYN_STAT(http_current_server_connections_stat, -1); // Make sure to work on the global stat
+  HTTP_SUM_DYN_STAT(http_transactions_per_server_con, transact_count);
 
   // Check to see if we are limiting the number of connections
   // per host
@@ -171,7 +166,7 @@ HttpServerSession::do_io_close(int alerr
   }
 
   if (to_parent_proxy) {
-    HTTP_SUM_GLOBAL_DYN_STAT(http_current_parent_proxy_connections_stat, -1);
+    HTTP_DECREMENT_DYN_STAT(http_current_parent_proxy_connections_stat);
   }
   destroy();
 }

Modified: trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc?rev=1028908&r1=1028907&r2=1028908&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc Fri Oct 29 21:26:55 2010
@@ -5974,6 +5974,8 @@ HttpTransact::initialize_state_variables
     // content length to the browser, and we will correct //
     // the cache if it turnrd out that the servers lied.  //
     ////////////////////////////////////////////////////////
+    //TODO: We should quite possibly disable this check, it will cause us to violate the
+    // protocol in some cases (returning too much data). /leif XXX
     if (incoming_response->presence(MIME_PRESENCE_CONTENT_LENGTH)) {
       if (s->current.server->keep_alive == HTTP_NO_KEEPALIVE) {
         s->hdr_info.trust_response_cl = false;
@@ -7379,8 +7381,7 @@ HttpTransact::delete_all_document_altern
     } else {
       if (valid_max_forwards) {
         --max_forwards;
-        Debug("http_trans",
-              "[delete_all_document_alternates_and_return] " "Decrementing max_forwards to %d", max_forwards);
+        Debug("http_trans", "[delete_all_document_alternates_and_return] " "Decrementing max_forwards to %d", max_forwards);
         s->hdr_info.client_request.value_set_int(MIME_FIELD_MAX_FORWARDS, MIME_LEN_MAX_FORWARDS, max_forwards);
       }
     }