You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by sh...@apache.org on 2018/02/08 01:36:07 UTC

[trafficserver] branch master updated (a98021c -> b420cff)

This is an automated email from the ASF dual-hosted git repository.

shinrich pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git.


    from a98021c  Send VC_EVENT_WRITE_READY/COMPLETE when write_vio is consumed
     new afcb78d  Added logcode and stats
     new b420cff  Remove client read timeout

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 proxy/hdrs/HTTP.h            |  3 ++-
 proxy/http/HttpConfig.cc     |  9 +++++++++
 proxy/http/HttpConfig.h      |  3 +++
 proxy/http/HttpSM.cc         | 24 ++++++++++++++++++------
 proxy/http/HttpTransact.cc   |  5 +++++
 proxy/logging/Log.cc         | 17 +++++++++--------
 proxy/logstats.cc            |  9 +++++++++
 proxy/tests/logstats.json    |  2 ++
 proxy/tests/logstats.summary |  1 +
 9 files changed, 58 insertions(+), 15 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
shinrich@apache.org.

[trafficserver] 01/02: Added logcode and stats

Posted by sh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

shinrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit afcb78de81cd9c2db48edce1f535dec775196de4
Author: Zeyuan Yu <ze...@gmail.com>
AuthorDate: Wed Feb 7 18:47:29 2018 +0000

    Added logcode and stats
---
 proxy/hdrs/HTTP.h            |  4 +++-
 proxy/http/HttpConfig.cc     | 18 ++++++++++++++++++
 proxy/http/HttpConfig.h      |  6 ++++++
 proxy/http/HttpSM.cc         | 22 ++++++++++++++++++----
 proxy/http/HttpTransact.cc   | 10 ++++++++++
 proxy/logging/Log.cc         | 23 ++++++++++++++++++++++-
 proxy/logstats.cc            | 16 ++++++++++++++++
 proxy/tests/logstats.json    |  4 ++++
 proxy/tests/logstats.summary |  2 ++
 9 files changed, 99 insertions(+), 6 deletions(-)

diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h
index bc18c02..ba221d6 100644
--- a/proxy/hdrs/HTTP.h
+++ b/proxy/hdrs/HTTP.h
@@ -142,7 +142,9 @@ enum SquidLogCode {
   SQUID_LOG_ERR_POST_ENTITY_TOO_LARGE = 'L',
   SQUID_LOG_ERR_NO_CLIENTS_BIG_OBJ    = 'r',
   SQUID_LOG_ERR_READ_ERROR            = 's',
-  SQUID_LOG_ERR_CLIENT_ABORT          = 't',
+  SQUID_LOG_ERR_CLIENT_ABORT          = 't',  // Client side abort logging
+  SQUID_LOG_ERR_CLIENT_READ_TIMEOUT   = 'J',  // Client side abort logging
+  SQUID_LOG_ERR_CLIENT_READ_ERROR     = 'K',  // Client side abort logging
   SQUID_LOG_ERR_CONNECT_FAIL          = 'u',
   SQUID_LOG_ERR_INVALID_REQ           = 'v',
   SQUID_LOG_ERR_UNSUP_REQ             = 'w',
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index c58ccce..e9932b5 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -603,6 +603,24 @@ register_stat_callbacks()
   RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_abort_origin_server_bytes_stat", RECD_INT,
                      RECP_PERSISTENT, (int)http_err_client_abort_origin_server_bytes_stat, RecRawStatSyncSum);
 
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_timeout_count_stat", RECD_COUNTER, RECP_PERSISTENT,
+                     (int)http_err_client_read_timeout_count_stat, RecRawStatSyncCount);
+
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_timeout_user_agent_bytes_stat", RECD_INT, RECP_PERSISTENT,
+                     (int)http_err_client_read_timeout_user_agent_bytes_stat, RecRawStatSyncSum);
+
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_timeout_origin_server_bytes_stat", RECD_INT,
+                     RECP_PERSISTENT, (int)http_err_client_read_timeout_origin_server_bytes_stat, RecRawStatSyncSum);
+//
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_count_stat", RECD_COUNTER, RECP_PERSISTENT,
+                     (int)http_err_client_read_error_count_stat, RecRawStatSyncCount);
+
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_user_agent_bytes_stat", RECD_INT, RECP_PERSISTENT,
+                     (int)http_err_client_read_error_user_agent_bytes_stat, RecRawStatSyncSum);
+
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_origin_server_bytes_stat", RECD_INT,
+                     RECP_PERSISTENT, (int)http_err_client_read_error_origin_server_bytes_stat, RecRawStatSyncSum);
+
   RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_connect_fail_count_stat", RECD_COUNTER, RECP_PERSISTENT,
                      (int)http_err_connect_fail_count_stat, RecRawStatSyncCount);
 
diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
index b4e1d81..10653c3 100644
--- a/proxy/http/HttpConfig.h
+++ b/proxy/http/HttpConfig.h
@@ -211,6 +211,12 @@ enum {
   http_err_client_abort_count_stat,
   http_err_client_abort_user_agent_bytes_stat,
   http_err_client_abort_origin_server_bytes_stat,
+  http_err_client_read_timeout_count_stat,
+  http_err_client_read_timeout_user_agent_bytes_stat,
+  http_err_client_read_timeout_origin_server_bytes_stat,
+  http_err_client_read_error_count_stat,
+  http_err_client_read_error_user_agent_bytes_stat,
+  http_err_client_read_error_origin_server_bytes_stat,
   http_err_connect_fail_count_stat,
   http_err_connect_fail_user_agent_bytes_stat,
   http_err_connect_fail_origin_server_bytes_stat,
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 6ffbdf5..fdf0065 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -615,7 +615,7 @@ HttpSM::state_read_client_request_header(int event, void *data)
     //   bail on the state machine
     vc_table.cleanup_entry(ua_entry);
     ua_entry                  = nullptr;
-    t_state.client_info.abort = HttpTransact::ABORTED;
+    set_ua_abort(HttpTransact::ABORTED, event);
     terminate_sm              = true;
     return 0;
   }
@@ -1004,7 +1004,7 @@ HttpSM::state_read_push_response_header(int event, void *data)
   case VC_EVENT_INACTIVITY_TIMEOUT:
   case VC_EVENT_ACTIVE_TIMEOUT:
     // The user agent is hosed.  Send an error
-    t_state.client_info.abort = HttpTransact::ABORTED;
+    set_ua_abort(HttpTransact::ABORTED, event);
     call_transact_and_set_next_state(HttpTransact::HandleBadPushRespHdr);
     return 0;
   }
@@ -3299,7 +3299,7 @@ HttpSM::tunnel_handler_ua_push(int event, HttpTunnelProducer *p)
   case VC_EVENT_ERROR:
   case VC_EVENT_EOS:
     // Transfer terminated.  Bail on the cache write.
-    t_state.client_info.abort = HttpTransact::ABORTED;
+    set_ua_abort(HttpTransact::ABORTED, event);
     p->vc->do_io_close(EHTTP_ERROR);
     p->read_vio = nullptr;
     tunnel.chain_abort_all(p);
@@ -5152,7 +5152,21 @@ HttpSM::set_ua_abort(HttpTransact::AbortState_t ua_abort, int event)
   switch (ua_abort) {
   case HttpTransact::ABORTED:
   case HttpTransact::MAYBE_ABORTED:
-    t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_ABORT;
+    // More detailed client side abort logging based on event
+    switch (event) {
+    case VC_EVENT_ACTIVE_TIMEOUT:
+    case VC_EVENT_INACTIVITY_TIMEOUT:
+      t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_READ_TIMEOUT;
+      break;
+    case VC_EVENT_ERROR:
+      t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_READ_ERROR;
+      break;
+    case VC_EVENT_EOS:
+    // Fall-through
+    default:
+      t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_ABORT;
+      break;
+    }
     break;
   default:
     // Handled here:
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 6ad5767..6f4aaef 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -8518,6 +8518,16 @@ HttpTransact::update_size_and_time_stats(State *s, ink_hrtime total_time, ink_hr
     HTTP_SUM_DYN_STAT(http_err_client_abort_user_agent_bytes_stat, user_agent_bytes);
     HTTP_SUM_DYN_STAT(http_err_client_abort_origin_server_bytes_stat, origin_server_bytes);
     break;
+  case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
+    HTTP_INCREMENT_DYN_STAT(http_err_client_read_timeout_count_stat);
+    HTTP_SUM_DYN_STAT(http_err_client_read_timeout_user_agent_bytes_stat, user_agent_bytes);
+    HTTP_SUM_DYN_STAT(http_err_client_read_timeout_origin_server_bytes_stat, origin_server_bytes);
+    break;
+  case SQUID_LOG_ERR_CLIENT_READ_ERROR:
+    HTTP_INCREMENT_DYN_STAT(http_err_client_read_error_count_stat);
+    HTTP_SUM_DYN_STAT(http_err_client_read_error_user_agent_bytes_stat, user_agent_bytes);
+    HTTP_SUM_DYN_STAT(http_err_client_read_error_origin_server_bytes_stat, origin_server_bytes);
+    break;
   case SQUID_LOG_ERR_CONNECT_FAIL:
     HTTP_INCREMENT_DYN_STAT(http_err_connect_fail_count_stat);
     HTTP_SUM_DYN_STAT(http_err_connect_fail_user_agent_bytes_stat, user_agent_bytes);
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index 0a2fe4d..8997e86 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -588,13 +588,34 @@ Log::init_fields()
     "UDP_INVALID", SQUID_LOG_UDP_RELOADING, "UDP_RELOADING", SQUID_LOG_UDP_FUTURE_1, "UDP_FUTURE_1", SQUID_LOG_UDP_FUTURE_2,
     "UDP_FUTURE_2", SQUID_LOG_ERR_READ_TIMEOUT, "ERR_READ_TIMEOUT", SQUID_LOG_ERR_LIFETIME_EXP, "ERR_LIFETIME_EXP",
     SQUID_LOG_ERR_POST_ENTITY_TOO_LARGE, "ERR_POST_ENTITY_TOO_LARGE", SQUID_LOG_ERR_NO_CLIENTS_BIG_OBJ, "ERR_NO_CLIENTS_BIG_OBJ",
-    SQUID_LOG_ERR_READ_ERROR, "ERR_READ_ERROR", SQUID_LOG_ERR_CLIENT_ABORT, "ERR_CLIENT_ABORT", SQUID_LOG_ERR_CONNECT_FAIL,
+    SQUID_LOG_ERR_READ_ERROR, "ERR_READ_ERROR", SQUID_LOG_ERR_CLIENT_ABORT, "ERR_CLIENT_ABORT_TEST", SQUID_LOG_ERR_CONNECT_FAIL,
     "ERR_CONNECT_FAIL", SQUID_LOG_ERR_INVALID_REQ, "ERR_INVALID_REQ", SQUID_LOG_ERR_UNSUP_REQ, "ERR_UNSUP_REQ",
     SQUID_LOG_ERR_INVALID_URL, "ERR_INVALID_URL", SQUID_LOG_ERR_NO_FDS, "ERR_NO_FDS", SQUID_LOG_ERR_DNS_FAIL, "ERR_DNS_FAIL",
     SQUID_LOG_ERR_NOT_IMPLEMENTED, "ERR_NOT_IMPLEMENTED", SQUID_LOG_ERR_CANNOT_FETCH, "ERR_CANNOT_FETCH", SQUID_LOG_ERR_NO_RELAY,
     "ERR_NO_RELAY", SQUID_LOG_ERR_DISK_IO, "ERR_DISK_IO", SQUID_LOG_ERR_ZERO_SIZE_OBJECT, "ERR_ZERO_SIZE_OBJECT",
     SQUID_LOG_ERR_PROXY_DENIED, "ERR_PROXY_DENIED", SQUID_LOG_ERR_WEBFETCH_DETECTED, "ERR_WEBFETCH_DETECTED",
     SQUID_LOG_ERR_FUTURE_1, "ERR_FUTURE_1", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN");
+  // cache_code_map->init(
+  //   52, SQUID_LOG_EMPTY, "UNDEFINED", SQUID_LOG_TCP_HIT, "TCP_HIT", SQUID_LOG_TCP_DISK_HIT, "TCP_DISK_HIT", SQUID_LOG_TCP_MEM_HIT,
+  //   "TCP_MEM_HIT", SQUID_LOG_TCP_MISS, "TCP_MISS", SQUID_LOG_TCP_EXPIRED_MISS, "TCP_EXPIRED_MISS", SQUID_LOG_TCP_REFRESH_HIT,
+  //   "TCP_REFRESH_HIT", SQUID_LOG_TCP_REF_FAIL_HIT, "TCP_REFRESH_FAIL_HIT", SQUID_LOG_TCP_REFRESH_MISS, "TCP_REFRESH_MISS",
+  //   SQUID_LOG_TCP_CLIENT_REFRESH, "TCP_CLIENT_REFRESH_MISS", SQUID_LOG_TCP_IMS_HIT, "TCP_IMS_HIT", SQUID_LOG_TCP_IMS_MISS,
+  //   "TCP_IMS_MISS", SQUID_LOG_TCP_SWAPFAIL, "TCP_SWAPFAIL_MISS", SQUID_LOG_TCP_DENIED, "TCP_DENIED", SQUID_LOG_TCP_WEBFETCH_MISS,
+  //   "TCP_WEBFETCH_MISS", SQUID_LOG_TCP_FUTURE_2, "TCP_FUTURE_2", SQUID_LOG_TCP_HIT_REDIRECT, "TCP_HIT_REDIRECT",
+  //   SQUID_LOG_TCP_MISS_REDIRECT, "TCP_MISS_REDIRECT", SQUID_LOG_TCP_HIT_X_REDIRECT, "TCP_HIT_X_REDIRECT",
+  //   SQUID_LOG_TCP_MISS_X_REDIRECT, "TCP_MISS_X_REDIRECT", SQUID_LOG_UDP_HIT, "UDP_HIT", SQUID_LOG_UDP_WEAK_HIT, "UDP_WEAK_HIT",
+  //   SQUID_LOG_UDP_HIT_OBJ, "UDP_HIT_OBJ", SQUID_LOG_UDP_MISS, "UDP_MISS", SQUID_LOG_UDP_DENIED, "UDP_DENIED", SQUID_LOG_UDP_INVALID,
+  //   "UDP_INVALID", SQUID_LOG_UDP_RELOADING, "UDP_RELOADING", SQUID_LOG_UDP_FUTURE_1, "UDP_FUTURE_1", SQUID_LOG_UDP_FUTURE_2,
+  //   "UDP_FUTURE_2", SQUID_LOG_ERR_READ_TIMEOUT, "ERR_READ_TIMEOUT", SQUID_LOG_ERR_LIFETIME_EXP, "ERR_LIFETIME_EXP",
+  //   SQUID_LOG_ERR_POST_ENTITY_TOO_LARGE, "ERR_POST_ENTITY_TOO_LARGE", SQUID_LOG_ERR_NO_CLIENTS_BIG_OBJ, "ERR_NO_CLIENTS_BIG_OBJ",
+  //   SQUID_LOG_ERR_READ_ERROR, "ERR_READ_ERROR", SQUID_LOG_ERR_CLIENT_ABORT, "ERR_CLIENT_ABORT_TEST", SQUID_LOG_ERR_CLIENT_READ_TIMEOUT,
+  //   "ERR_CLIENT_READ_TIMEOUT", SQUID_LOG_ERR_CLIENT_READ_ERROR, "ERR_CLIENT_READ_ERROR", SQUID_LOG_ERR_CONNECT_FAIL,
+  //   "ERR_CONNECT_FAIL", SQUID_LOG_ERR_INVALID_REQ, "ERR_INVALID_REQ", SQUID_LOG_ERR_UNSUP_REQ, "ERR_UNSUP_REQ",
+  //   SQUID_LOG_ERR_INVALID_URL, "ERR_INVALID_URL", SQUID_LOG_ERR_NO_FDS, "ERR_NO_FDS", SQUID_LOG_ERR_DNS_FAIL, "ERR_DNS_FAIL",
+  //   SQUID_LOG_ERR_NOT_IMPLEMENTED, "ERR_NOT_IMPLEMENTED", SQUID_LOG_ERR_CANNOT_FETCH, "ERR_CANNOT_FETCH", SQUID_LOG_ERR_NO_RELAY,
+  //   "ERR_NO_RELAY", SQUID_LOG_ERR_DISK_IO, "ERR_DISK_IO", SQUID_LOG_ERR_ZERO_SIZE_OBJECT, "ERR_ZERO_SIZE_OBJECT",
+  //   SQUID_LOG_ERR_PROXY_DENIED, "ERR_PROXY_DENIED", SQUID_LOG_ERR_WEBFETCH_DETECTED, "ERR_WEBFETCH_DETECTED",
+  //   SQUID_LOG_ERR_FUTURE_1, "ERR_FUTURE_1", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN");
 
   Ptr<LogFieldAliasTable> cache_hit_miss_map = make_ptr(new LogFieldAliasTable);
   cache_hit_miss_map->init(21, SQUID_HIT_RESERVED, "HIT", SQUID_HIT_LEVEL_1, "HIT_RAM", // Also SQUID_HIT_RAM
diff --git a/proxy/logstats.cc b/proxy/logstats.cc
index 0c1d2ac..ec9d9e6 100644
--- a/proxy/logstats.cc
+++ b/proxy/logstats.cc
@@ -157,6 +157,8 @@ struct OriginStats {
     } misses;
     struct {
       StatsCounter client_abort;
+      StatsCounter client_read_timeout;
+      StatsCounter client_read_error;
       StatsCounter connect_fail;
       StatsCounter invalid_req;
       StatsCounter unknown;
@@ -437,6 +439,8 @@ public:
         ++(l->misses);
         break;
       case SQUID_LOG_ERR_CLIENT_ABORT:
+      case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
+      case SQUID_LOG_ERR_CLIENT_READ_ERROR:
       case SQUID_LOG_ERR_CONNECT_FAIL:
       case SQUID_LOG_ERR_INVALID_REQ:
       case SQUID_LOG_ERR_UNKNOWN:
@@ -510,6 +514,8 @@ public:
         l->misses = 1;
         break;
       case SQUID_LOG_ERR_CLIENT_ABORT:
+      case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
+      case SQUID_LOG_ERR_CLIENT_READ_ERROR:
       case SQUID_LOG_ERR_CONNECT_FAIL:
       case SQUID_LOG_ERR_INVALID_REQ:
       case SQUID_LOG_ERR_UNKNOWN:
@@ -933,6 +939,14 @@ update_results_elapsed(OriginStats *stat, int result, int elapsed, int size)
     update_counter(stat->results.errors.client_abort, size);
     update_counter(stat->results.errors.total, size);
     break;
+  case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
+    update_counter(stat->results.errors.client_read_timeout, size);
+    update_counter(stat->results.errors.total, size);
+    break;
+  case SQUID_LOG_ERR_CLIENT_READ_ERROR:
+    update_counter(stat->results.errors.client_read_error, size);
+    update_counter(stat->results.errors.total, size);
+    break;
   case SQUID_LOG_ERR_CONNECT_FAIL:
     update_counter(stat->results.errors.connect_fail, size);
     update_counter(stat->results.errors.total, size);
@@ -2024,6 +2038,8 @@ print_detail_stats(const OriginStats *stat, bool json, bool concise)
   }
 
   format_line(json ? "error.client_abort" : "Client aborted", stat->results.errors.client_abort, stat->total, json, concise);
+  format_line(json ? "error.client_read_timeout": "Client read timeout", stat->results.errors.client_read_timeout, stat->total, json, concise);
+  format_line(json ? "error.client_read_error": "Client read error", stat->results.errors.client_read_error, stat->total, json, concise);
   format_line(json ? "error.connect_failed" : "Connect failed", stat->results.errors.connect_fail, stat->total, json, concise);
   format_line(json ? "error.invalid_request" : "Invalid request", stat->results.errors.invalid_req, stat->total, json, concise);
   format_line(json ? "error.unknown" : "Unknown error(99)", stat->results.errors.unknown, stat->total, json, concise);
diff --git a/proxy/tests/logstats.json b/proxy/tests/logstats.json
index d9609e8..819a821 100644
--- a/proxy/tests/logstats.json
+++ b/proxy/tests/logstats.json
@@ -11,6 +11,8 @@
     "miss.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "miss.total" : { "req": "66", "req_pct": "98.51", "bytes": "6601222", "bytes_pct": "100.00" },
     "error.client_abort" : { "req": "1", "req_pct": "1.49", "bytes": "0", "bytes_pct": "0.00" },
+    "error.client_read_timeout" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
+    "error.client_read_error" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.connect_failed" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.invalid_request" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.unknown" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
@@ -136,6 +138,8 @@
     "miss.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "miss.total" : { "req": "66", "req_pct": "98.51", "bytes": "6601222", "bytes_pct": "100.00" },
     "error.client_abort" : { "req": "1", "req_pct": "1.49", "bytes": "0", "bytes_pct": "0.00" },
+    "error.client_read_timeout" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
+    "error.client_read_error" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.connect_failed" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.invalid_request" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.unknown" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
diff --git a/proxy/tests/logstats.summary b/proxy/tests/logstats.summary
index 34a4560..13bcb8c 100644
--- a/proxy/tests/logstats.summary
+++ b/proxy/tests/logstats.summary
@@ -16,6 +16,8 @@ Cache miss other                           0      0.00%      0.00KB      0.00%
 Cache miss total                          66     98.51%      6.30MB    100.00%
 
 Client aborted                             1      1.49%      0.00KB      0.00%
+Client read timeout                        0      0.00%      0.00KB      0.00%
+Client read error                          0      0.00%      0.00KB      0.00%
 Connect failed                             0      0.00%      0.00KB      0.00%
 Invalid request                            0      0.00%      0.00KB      0.00%
 Unknown error(99)                          0      0.00%      0.00KB      0.00%

-- 
To stop receiving notification emails like this one, please contact
shinrich@apache.org.

[trafficserver] 02/02: Remove client read timeout

Posted by sh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

shinrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit b420cff912dc0023cf68df94ebb47acb1156a8b0
Author: Zeyuan Yu <ze...@gmail.com>
AuthorDate: Wed Feb 7 20:54:33 2018 +0000

    Remove client read timeout
---
 proxy/hdrs/HTTP.h            |  5 ++---
 proxy/http/HttpConfig.cc     | 13 ++-----------
 proxy/http/HttpConfig.h      |  3 ---
 proxy/http/HttpSM.cc         | 10 ++++------
 proxy/http/HttpTransact.cc   |  5 -----
 proxy/logging/Log.cc         | 38 +++++++++-----------------------------
 proxy/logstats.cc            | 11 ++---------
 proxy/tests/logstats.json    |  2 --
 proxy/tests/logstats.summary |  1 -
 9 files changed, 19 insertions(+), 69 deletions(-)

diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h
index ba221d6..eb99817 100644
--- a/proxy/hdrs/HTTP.h
+++ b/proxy/hdrs/HTTP.h
@@ -142,9 +142,8 @@ enum SquidLogCode {
   SQUID_LOG_ERR_POST_ENTITY_TOO_LARGE = 'L',
   SQUID_LOG_ERR_NO_CLIENTS_BIG_OBJ    = 'r',
   SQUID_LOG_ERR_READ_ERROR            = 's',
-  SQUID_LOG_ERR_CLIENT_ABORT          = 't',  // Client side abort logging
-  SQUID_LOG_ERR_CLIENT_READ_TIMEOUT   = 'J',  // Client side abort logging
-  SQUID_LOG_ERR_CLIENT_READ_ERROR     = 'K',  // Client side abort logging
+  SQUID_LOG_ERR_CLIENT_ABORT          = 't', // Client side abort logging
+  SQUID_LOG_ERR_CLIENT_READ_ERROR     = 'J', // Client side abort logging
   SQUID_LOG_ERR_CONNECT_FAIL          = 'u',
   SQUID_LOG_ERR_INVALID_REQ           = 'v',
   SQUID_LOG_ERR_UNSUP_REQ             = 'w',
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index e9932b5..c4d3d72 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -603,20 +603,11 @@ register_stat_callbacks()
   RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_abort_origin_server_bytes_stat", RECD_INT,
                      RECP_PERSISTENT, (int)http_err_client_abort_origin_server_bytes_stat, RecRawStatSyncSum);
 
-  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_timeout_count_stat", RECD_COUNTER, RECP_PERSISTENT,
-                     (int)http_err_client_read_timeout_count_stat, RecRawStatSyncCount);
-
-  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_timeout_user_agent_bytes_stat", RECD_INT, RECP_PERSISTENT,
-                     (int)http_err_client_read_timeout_user_agent_bytes_stat, RecRawStatSyncSum);
-
-  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_timeout_origin_server_bytes_stat", RECD_INT,
-                     RECP_PERSISTENT, (int)http_err_client_read_timeout_origin_server_bytes_stat, RecRawStatSyncSum);
-//
   RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_count_stat", RECD_COUNTER, RECP_PERSISTENT,
                      (int)http_err_client_read_error_count_stat, RecRawStatSyncCount);
 
-  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_user_agent_bytes_stat", RECD_INT, RECP_PERSISTENT,
-                     (int)http_err_client_read_error_user_agent_bytes_stat, RecRawStatSyncSum);
+  RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_user_agent_bytes_stat", RECD_INT,
+                     RECP_PERSISTENT, (int)http_err_client_read_error_user_agent_bytes_stat, RecRawStatSyncSum);
 
   RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.err_client_read_error_origin_server_bytes_stat", RECD_INT,
                      RECP_PERSISTENT, (int)http_err_client_read_error_origin_server_bytes_stat, RecRawStatSyncSum);
diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
index 10653c3..e60fded 100644
--- a/proxy/http/HttpConfig.h
+++ b/proxy/http/HttpConfig.h
@@ -211,9 +211,6 @@ enum {
   http_err_client_abort_count_stat,
   http_err_client_abort_user_agent_bytes_stat,
   http_err_client_abort_origin_server_bytes_stat,
-  http_err_client_read_timeout_count_stat,
-  http_err_client_read_timeout_user_agent_bytes_stat,
-  http_err_client_read_timeout_origin_server_bytes_stat,
   http_err_client_read_error_count_stat,
   http_err_client_read_error_user_agent_bytes_stat,
   http_err_client_read_error_origin_server_bytes_stat,
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index fdf0065..50a1f30 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -614,9 +614,9 @@ HttpSM::state_read_client_request_header(int event, void *data)
     // The user agent is hosed.  Close it &
     //   bail on the state machine
     vc_table.cleanup_entry(ua_entry);
-    ua_entry                  = nullptr;
+    ua_entry = nullptr;
     set_ua_abort(HttpTransact::ABORTED, event);
-    terminate_sm              = true;
+    terminate_sm = true;
     return 0;
   }
 
@@ -5154,14 +5154,12 @@ HttpSM::set_ua_abort(HttpTransact::AbortState_t ua_abort, int event)
   case HttpTransact::MAYBE_ABORTED:
     // More detailed client side abort logging based on event
     switch (event) {
-    case VC_EVENT_ACTIVE_TIMEOUT:
-    case VC_EVENT_INACTIVITY_TIMEOUT:
-      t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_READ_TIMEOUT;
-      break;
     case VC_EVENT_ERROR:
       t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_READ_ERROR;
       break;
     case VC_EVENT_EOS:
+    case VC_EVENT_ACTIVE_TIMEOUT:     // Won't matter. Server will hangup
+    case VC_EVENT_INACTIVITY_TIMEOUT: // Won't matter. Send back 408
     // Fall-through
     default:
       t_state.squid_codes.log_code = SQUID_LOG_ERR_CLIENT_ABORT;
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 6f4aaef..0c5ae6b 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -8518,11 +8518,6 @@ HttpTransact::update_size_and_time_stats(State *s, ink_hrtime total_time, ink_hr
     HTTP_SUM_DYN_STAT(http_err_client_abort_user_agent_bytes_stat, user_agent_bytes);
     HTTP_SUM_DYN_STAT(http_err_client_abort_origin_server_bytes_stat, origin_server_bytes);
     break;
-  case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
-    HTTP_INCREMENT_DYN_STAT(http_err_client_read_timeout_count_stat);
-    HTTP_SUM_DYN_STAT(http_err_client_read_timeout_user_agent_bytes_stat, user_agent_bytes);
-    HTTP_SUM_DYN_STAT(http_err_client_read_timeout_origin_server_bytes_stat, origin_server_bytes);
-    break;
   case SQUID_LOG_ERR_CLIENT_READ_ERROR:
     HTTP_INCREMENT_DYN_STAT(http_err_client_read_error_count_stat);
     HTTP_SUM_DYN_STAT(http_err_client_read_error_user_agent_bytes_stat, user_agent_bytes);
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index 8997e86..f9730c8 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -576,7 +576,7 @@ Log::init_fields()
 
   Ptr<LogFieldAliasTable> cache_code_map = make_ptr(new LogFieldAliasTable);
   cache_code_map->init(
-    50, SQUID_LOG_EMPTY, "UNDEFINED", SQUID_LOG_TCP_HIT, "TCP_HIT", SQUID_LOG_TCP_DISK_HIT, "TCP_DISK_HIT", SQUID_LOG_TCP_MEM_HIT,
+    51, SQUID_LOG_EMPTY, "UNDEFINED", SQUID_LOG_TCP_HIT, "TCP_HIT", SQUID_LOG_TCP_DISK_HIT, "TCP_DISK_HIT", SQUID_LOG_TCP_MEM_HIT,
     "TCP_MEM_HIT", SQUID_LOG_TCP_MISS, "TCP_MISS", SQUID_LOG_TCP_EXPIRED_MISS, "TCP_EXPIRED_MISS", SQUID_LOG_TCP_REFRESH_HIT,
     "TCP_REFRESH_HIT", SQUID_LOG_TCP_REF_FAIL_HIT, "TCP_REFRESH_FAIL_HIT", SQUID_LOG_TCP_REFRESH_MISS, "TCP_REFRESH_MISS",
     SQUID_LOG_TCP_CLIENT_REFRESH, "TCP_CLIENT_REFRESH_MISS", SQUID_LOG_TCP_IMS_HIT, "TCP_IMS_HIT", SQUID_LOG_TCP_IMS_MISS,
@@ -588,34 +588,14 @@ Log::init_fields()
     "UDP_INVALID", SQUID_LOG_UDP_RELOADING, "UDP_RELOADING", SQUID_LOG_UDP_FUTURE_1, "UDP_FUTURE_1", SQUID_LOG_UDP_FUTURE_2,
     "UDP_FUTURE_2", SQUID_LOG_ERR_READ_TIMEOUT, "ERR_READ_TIMEOUT", SQUID_LOG_ERR_LIFETIME_EXP, "ERR_LIFETIME_EXP",
     SQUID_LOG_ERR_POST_ENTITY_TOO_LARGE, "ERR_POST_ENTITY_TOO_LARGE", SQUID_LOG_ERR_NO_CLIENTS_BIG_OBJ, "ERR_NO_CLIENTS_BIG_OBJ",
-    SQUID_LOG_ERR_READ_ERROR, "ERR_READ_ERROR", SQUID_LOG_ERR_CLIENT_ABORT, "ERR_CLIENT_ABORT_TEST", SQUID_LOG_ERR_CONNECT_FAIL,
-    "ERR_CONNECT_FAIL", SQUID_LOG_ERR_INVALID_REQ, "ERR_INVALID_REQ", SQUID_LOG_ERR_UNSUP_REQ, "ERR_UNSUP_REQ",
-    SQUID_LOG_ERR_INVALID_URL, "ERR_INVALID_URL", SQUID_LOG_ERR_NO_FDS, "ERR_NO_FDS", SQUID_LOG_ERR_DNS_FAIL, "ERR_DNS_FAIL",
-    SQUID_LOG_ERR_NOT_IMPLEMENTED, "ERR_NOT_IMPLEMENTED", SQUID_LOG_ERR_CANNOT_FETCH, "ERR_CANNOT_FETCH", SQUID_LOG_ERR_NO_RELAY,
-    "ERR_NO_RELAY", SQUID_LOG_ERR_DISK_IO, "ERR_DISK_IO", SQUID_LOG_ERR_ZERO_SIZE_OBJECT, "ERR_ZERO_SIZE_OBJECT",
-    SQUID_LOG_ERR_PROXY_DENIED, "ERR_PROXY_DENIED", SQUID_LOG_ERR_WEBFETCH_DETECTED, "ERR_WEBFETCH_DETECTED",
-    SQUID_LOG_ERR_FUTURE_1, "ERR_FUTURE_1", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN");
-  // cache_code_map->init(
-  //   52, SQUID_LOG_EMPTY, "UNDEFINED", SQUID_LOG_TCP_HIT, "TCP_HIT", SQUID_LOG_TCP_DISK_HIT, "TCP_DISK_HIT", SQUID_LOG_TCP_MEM_HIT,
-  //   "TCP_MEM_HIT", SQUID_LOG_TCP_MISS, "TCP_MISS", SQUID_LOG_TCP_EXPIRED_MISS, "TCP_EXPIRED_MISS", SQUID_LOG_TCP_REFRESH_HIT,
-  //   "TCP_REFRESH_HIT", SQUID_LOG_TCP_REF_FAIL_HIT, "TCP_REFRESH_FAIL_HIT", SQUID_LOG_TCP_REFRESH_MISS, "TCP_REFRESH_MISS",
-  //   SQUID_LOG_TCP_CLIENT_REFRESH, "TCP_CLIENT_REFRESH_MISS", SQUID_LOG_TCP_IMS_HIT, "TCP_IMS_HIT", SQUID_LOG_TCP_IMS_MISS,
-  //   "TCP_IMS_MISS", SQUID_LOG_TCP_SWAPFAIL, "TCP_SWAPFAIL_MISS", SQUID_LOG_TCP_DENIED, "TCP_DENIED", SQUID_LOG_TCP_WEBFETCH_MISS,
-  //   "TCP_WEBFETCH_MISS", SQUID_LOG_TCP_FUTURE_2, "TCP_FUTURE_2", SQUID_LOG_TCP_HIT_REDIRECT, "TCP_HIT_REDIRECT",
-  //   SQUID_LOG_TCP_MISS_REDIRECT, "TCP_MISS_REDIRECT", SQUID_LOG_TCP_HIT_X_REDIRECT, "TCP_HIT_X_REDIRECT",
-  //   SQUID_LOG_TCP_MISS_X_REDIRECT, "TCP_MISS_X_REDIRECT", SQUID_LOG_UDP_HIT, "UDP_HIT", SQUID_LOG_UDP_WEAK_HIT, "UDP_WEAK_HIT",
-  //   SQUID_LOG_UDP_HIT_OBJ, "UDP_HIT_OBJ", SQUID_LOG_UDP_MISS, "UDP_MISS", SQUID_LOG_UDP_DENIED, "UDP_DENIED", SQUID_LOG_UDP_INVALID,
-  //   "UDP_INVALID", SQUID_LOG_UDP_RELOADING, "UDP_RELOADING", SQUID_LOG_UDP_FUTURE_1, "UDP_FUTURE_1", SQUID_LOG_UDP_FUTURE_2,
-  //   "UDP_FUTURE_2", SQUID_LOG_ERR_READ_TIMEOUT, "ERR_READ_TIMEOUT", SQUID_LOG_ERR_LIFETIME_EXP, "ERR_LIFETIME_EXP",
-  //   SQUID_LOG_ERR_POST_ENTITY_TOO_LARGE, "ERR_POST_ENTITY_TOO_LARGE", SQUID_LOG_ERR_NO_CLIENTS_BIG_OBJ, "ERR_NO_CLIENTS_BIG_OBJ",
-  //   SQUID_LOG_ERR_READ_ERROR, "ERR_READ_ERROR", SQUID_LOG_ERR_CLIENT_ABORT, "ERR_CLIENT_ABORT_TEST", SQUID_LOG_ERR_CLIENT_READ_TIMEOUT,
-  //   "ERR_CLIENT_READ_TIMEOUT", SQUID_LOG_ERR_CLIENT_READ_ERROR, "ERR_CLIENT_READ_ERROR", SQUID_LOG_ERR_CONNECT_FAIL,
-  //   "ERR_CONNECT_FAIL", SQUID_LOG_ERR_INVALID_REQ, "ERR_INVALID_REQ", SQUID_LOG_ERR_UNSUP_REQ, "ERR_UNSUP_REQ",
-  //   SQUID_LOG_ERR_INVALID_URL, "ERR_INVALID_URL", SQUID_LOG_ERR_NO_FDS, "ERR_NO_FDS", SQUID_LOG_ERR_DNS_FAIL, "ERR_DNS_FAIL",
-  //   SQUID_LOG_ERR_NOT_IMPLEMENTED, "ERR_NOT_IMPLEMENTED", SQUID_LOG_ERR_CANNOT_FETCH, "ERR_CANNOT_FETCH", SQUID_LOG_ERR_NO_RELAY,
-  //   "ERR_NO_RELAY", SQUID_LOG_ERR_DISK_IO, "ERR_DISK_IO", SQUID_LOG_ERR_ZERO_SIZE_OBJECT, "ERR_ZERO_SIZE_OBJECT",
-  //   SQUID_LOG_ERR_PROXY_DENIED, "ERR_PROXY_DENIED", SQUID_LOG_ERR_WEBFETCH_DETECTED, "ERR_WEBFETCH_DETECTED",
-  //   SQUID_LOG_ERR_FUTURE_1, "ERR_FUTURE_1", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN");
+    SQUID_LOG_ERR_READ_ERROR, "ERR_READ_ERROR", SQUID_LOG_ERR_CLIENT_ABORT, "ERR_CLIENT_ABORT", SQUID_LOG_ERR_CLIENT_READ_ERROR,
+    "ERR_CLIENT_READ_ERROR", SQUID_LOG_ERR_CONNECT_FAIL, "ERR_CONNECT_FAIL", SQUID_LOG_ERR_INVALID_REQ, "ERR_INVALID_REQ",
+    SQUID_LOG_ERR_UNSUP_REQ, "ERR_UNSUP_REQ", SQUID_LOG_ERR_INVALID_URL, "ERR_INVALID_URL", SQUID_LOG_ERR_NO_FDS, "ERR_NO_FDS",
+    SQUID_LOG_ERR_DNS_FAIL, "ERR_DNS_FAIL", SQUID_LOG_ERR_NOT_IMPLEMENTED, "ERR_NOT_IMPLEMENTED", SQUID_LOG_ERR_CANNOT_FETCH,
+    "ERR_CANNOT_FETCH", SQUID_LOG_ERR_NO_RELAY, "ERR_NO_RELAY", SQUID_LOG_ERR_DISK_IO, "ERR_DISK_IO",
+    SQUID_LOG_ERR_ZERO_SIZE_OBJECT, "ERR_ZERO_SIZE_OBJECT", SQUID_LOG_ERR_PROXY_DENIED, "ERR_PROXY_DENIED",
+    SQUID_LOG_ERR_WEBFETCH_DETECTED, "ERR_WEBFETCH_DETECTED", SQUID_LOG_ERR_FUTURE_1, "ERR_FUTURE_1", SQUID_LOG_ERR_UNKNOWN,
+    "ERR_UNKNOWN");
 
   Ptr<LogFieldAliasTable> cache_hit_miss_map = make_ptr(new LogFieldAliasTable);
   cache_hit_miss_map->init(21, SQUID_HIT_RESERVED, "HIT", SQUID_HIT_LEVEL_1, "HIT_RAM", // Also SQUID_HIT_RAM
diff --git a/proxy/logstats.cc b/proxy/logstats.cc
index ec9d9e6..9786c09 100644
--- a/proxy/logstats.cc
+++ b/proxy/logstats.cc
@@ -157,7 +157,6 @@ struct OriginStats {
     } misses;
     struct {
       StatsCounter client_abort;
-      StatsCounter client_read_timeout;
       StatsCounter client_read_error;
       StatsCounter connect_fail;
       StatsCounter invalid_req;
@@ -439,7 +438,6 @@ public:
         ++(l->misses);
         break;
       case SQUID_LOG_ERR_CLIENT_ABORT:
-      case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
       case SQUID_LOG_ERR_CLIENT_READ_ERROR:
       case SQUID_LOG_ERR_CONNECT_FAIL:
       case SQUID_LOG_ERR_INVALID_REQ:
@@ -514,7 +512,6 @@ public:
         l->misses = 1;
         break;
       case SQUID_LOG_ERR_CLIENT_ABORT:
-      case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
       case SQUID_LOG_ERR_CLIENT_READ_ERROR:
       case SQUID_LOG_ERR_CONNECT_FAIL:
       case SQUID_LOG_ERR_INVALID_REQ:
@@ -939,10 +936,6 @@ update_results_elapsed(OriginStats *stat, int result, int elapsed, int size)
     update_counter(stat->results.errors.client_abort, size);
     update_counter(stat->results.errors.total, size);
     break;
-  case SQUID_LOG_ERR_CLIENT_READ_TIMEOUT:
-    update_counter(stat->results.errors.client_read_timeout, size);
-    update_counter(stat->results.errors.total, size);
-    break;
   case SQUID_LOG_ERR_CLIENT_READ_ERROR:
     update_counter(stat->results.errors.client_read_error, size);
     update_counter(stat->results.errors.total, size);
@@ -2038,8 +2031,8 @@ print_detail_stats(const OriginStats *stat, bool json, bool concise)
   }
 
   format_line(json ? "error.client_abort" : "Client aborted", stat->results.errors.client_abort, stat->total, json, concise);
-  format_line(json ? "error.client_read_timeout": "Client read timeout", stat->results.errors.client_read_timeout, stat->total, json, concise);
-  format_line(json ? "error.client_read_error": "Client read error", stat->results.errors.client_read_error, stat->total, json, concise);
+  format_line(json ? "error.client_read_error" : "Client read error", stat->results.errors.client_read_error, stat->total, json,
+              concise);
   format_line(json ? "error.connect_failed" : "Connect failed", stat->results.errors.connect_fail, stat->total, json, concise);
   format_line(json ? "error.invalid_request" : "Invalid request", stat->results.errors.invalid_req, stat->total, json, concise);
   format_line(json ? "error.unknown" : "Unknown error(99)", stat->results.errors.unknown, stat->total, json, concise);
diff --git a/proxy/tests/logstats.json b/proxy/tests/logstats.json
index 819a821..e45b2b1 100644
--- a/proxy/tests/logstats.json
+++ b/proxy/tests/logstats.json
@@ -11,7 +11,6 @@
     "miss.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "miss.total" : { "req": "66", "req_pct": "98.51", "bytes": "6601222", "bytes_pct": "100.00" },
     "error.client_abort" : { "req": "1", "req_pct": "1.49", "bytes": "0", "bytes_pct": "0.00" },
-    "error.client_read_timeout" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.client_read_error" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.connect_failed" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.invalid_request" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
@@ -138,7 +137,6 @@
     "miss.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "miss.total" : { "req": "66", "req_pct": "98.51", "bytes": "6601222", "bytes_pct": "100.00" },
     "error.client_abort" : { "req": "1", "req_pct": "1.49", "bytes": "0", "bytes_pct": "0.00" },
-    "error.client_read_timeout" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.client_read_error" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.connect_failed" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
     "error.invalid_request" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
diff --git a/proxy/tests/logstats.summary b/proxy/tests/logstats.summary
index 13bcb8c..093c3ea 100644
--- a/proxy/tests/logstats.summary
+++ b/proxy/tests/logstats.summary
@@ -16,7 +16,6 @@ Cache miss other                           0      0.00%      0.00KB      0.00%
 Cache miss total                          66     98.51%      6.30MB    100.00%
 
 Client aborted                             1      1.49%      0.00KB      0.00%
-Client read timeout                        0      0.00%      0.00KB      0.00%
 Client read error                          0      0.00%      0.00KB      0.00%
 Connect failed                             0      0.00%      0.00KB      0.00%
 Invalid request                            0      0.00%      0.00KB      0.00%

-- 
To stop receiving notification emails like this one, please contact
shinrich@apache.org.