You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by da...@apache.org on 2018/04/12 14:17:46 UTC
[trafficserver] branch master updated: Adds squid log sub-codes for
detail
This is an automated email from the ASF dual-hosted git repository.
dagit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 9a42009 Adds squid log sub-codes for detail
9a42009 is described below
commit 9a420095e07f6c459555d8277c1f253caee8ecb6
Author: Derek Dagit <de...@oath.com>
AuthorDate: Tue Apr 10 15:36:58 2018 +0000
Adds squid log sub-codes for detail
The new log format symbol "crsc" (Cache Result Sub-Code) can provide
more specific detail that can be hidden behind current Cache Result
Codes.
This change adds a code for one such case: redirect retries exceeded.
---
doc/admin-guide/logging/cache-results.en.rst | 21 ++++++++++++++++++++-
doc/admin-guide/logging/formatting.en.rst | 3 +++
proxy/hdrs/HTTP.h | 6 ++++++
proxy/http/HttpSM.cc | 2 ++
proxy/http/HttpTransact.h | 1 +
proxy/logging/Log.cc | 9 +++++++++
proxy/logging/LogAccess.cc | 5 +++++
proxy/logging/LogAccess.h | 1 +
proxy/logging/LogAccessHttp.cc | 13 +++++++++++++
proxy/logging/LogAccessHttp.h | 1 +
10 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/doc/admin-guide/logging/cache-results.en.rst b/doc/admin-guide/logging/cache-results.en.rst
index fcbb84a..4edb2d3 100644
--- a/doc/admin-guide/logging/cache-results.en.rst
+++ b/doc/admin-guide/logging/cache-results.en.rst
@@ -26,7 +26,8 @@ In addition to recording information about client and origin requests and
responses, |TS| exposes detailed information about cache interactions for every
request which passes through a node. This information is incredibly important
to establishing an efficient caching configuration, though it is only present
-in your logging output if the :ref:`crc <crc>` logging field is used.
+in your logging output if the :ref:`crc <crc>` logging field is used. For even
+more detail, see :ref:`crsc <crsc>`.
Interpreting Cache Results
==========================
@@ -239,3 +240,21 @@ ERR_UNKNOWN
The client connected, but subsequently disconnected without sending
a request.
+
+.. _admin-logging-crsc:
+
+Cache Result Sub-Codes
+======================
+
+The following are all possible cache result sub-codes you will currently
+encounter in |TS| logging output, and what each one means. These sub-codes can
+offer more specific details that are not exposed in cache result codes.
+
+.. _crsc-num-redirects-exceeded:
+
+NUM_REDIRECTIONS_EXCEEDED
+-------------------------
+
+The origin server responded with a redirect, but following this redirect would
+exceed the configured maximum number of redirects allowed:
+:ts:cv:`proxy.config.http.number_of_redirections`
diff --git a/doc/admin-guide/logging/formatting.en.rst b/doc/admin-guide/logging/formatting.en.rst
index bbb3150..56676cc 100644
--- a/doc/admin-guide/logging/formatting.en.rst
+++ b/doc/admin-guide/logging/formatting.en.rst
@@ -147,6 +147,7 @@ Cache Details
.. _cluc:
.. _crc:
+.. _crsc:
.. _chm:
.. _cwr:
.. _cwtr:
@@ -162,6 +163,8 @@ cluc Client Request Cache Lookup URL, also known as the :term:`cache key`,
URL.
crc Proxy Cache Cache Result Code. The result of |TS| attempting to obtain
the object from cache; :ref:`admin-logging-cache-results`.
+crsc Proxy Cache Cache Result Sub-Code. More specific code to complement the
+ Cache Result Code.
chm Proxy Cache Cache Hit-Miss status. Specifies the level of cache from
which this request was served by |TS|. Currently supports
only RAM (``HIT_RAM``) vs disk (``HIT_DISK``).
diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h
index 597739f..7d11dc9 100644
--- a/proxy/hdrs/HTTP.h
+++ b/proxy/hdrs/HTTP.h
@@ -160,6 +160,12 @@ enum SquidLogCode {
SQUID_LOG_ERR_UNKNOWN = 'Z'
};
+// squild log subcodes
+enum SquidSubcode {
+ SQUID_SUBCODE_EMPTY = '0',
+ SQUID_SUBCODE_NUM_REDIRECTIONS_EXCEEDED = '1',
+};
+
/* squid hieratchy codes */
enum SquidHierarchyCode {
SQUID_HIER_EMPTY = '0',
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 2dfbba7..90cd2c5 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -1610,6 +1610,8 @@ HttpSM::handle_api_return()
(redirection_tries <= t_state.txn_conf->number_of_redirections)) {
++redirection_tries;
do_redirect();
+ } else if (redirection_tries > t_state.txn_conf->number_of_redirections) {
+ t_state.squid_codes.subcode = SQUID_SUBCODE_NUM_REDIRECTIONS_EXCEEDED;
}
// we have further processing to do
// based on what t_state.next_action is
diff --git a/proxy/http/HttpTransact.h b/proxy/http/HttpTransact.h
index 7150896..187531c 100644
--- a/proxy/http/HttpTransact.h
+++ b/proxy/http/HttpTransact.h
@@ -685,6 +685,7 @@ public:
typedef struct _SquidLogInfo {
SquidLogCode log_code = SQUID_LOG_ERR_UNKNOWN;
+ SquidSubcode subcode = SQUID_SUBCODE_EMPTY;
SquidHierarchyCode hier_code = SQUID_HIER_EMPTY;
SquidHitMissCode hit_miss_code = SQUID_MISS_NONE;
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index f9730c8..8522806 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -597,6 +597,9 @@ Log::init_fields()
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_subcode_map = make_ptr(new LogFieldAliasTable);
+ cache_subcode_map->init(2, SQUID_SUBCODE_EMPTY, "NONE", SQUID_SUBCODE_NUM_REDIRECTIONS_EXCEEDED, "NUM_REDIRECTIONS_EXCEEDED");
+
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
SQUID_HIT_LEVEL_2, "HIT_SSD", // Also SQUID_HIT_SSD
@@ -616,6 +619,12 @@ Log::init_fields()
global_field_list.add(field, false);
ink_hash_table_insert(field_symbol_hash, "crc", field);
+ // Reuse the unmarshalling code from crc
+ field = new LogField("cache_result_subcode", "crsc", LogField::sINT, &LogAccess::marshal_cache_result_subcode,
+ &LogAccess::unmarshal_cache_code, make_alias_map(cache_subcode_map));
+ global_field_list.add(field, false);
+ ink_hash_table_insert(field_symbol_hash, "crsc", field);
+
field = new LogField("cache_hit_miss", "chm", LogField::sINT, &LogAccess::marshal_cache_hit_miss,
&LogAccess::unmarshal_cache_hit_miss, make_alias_map(cache_hit_miss_map));
global_field_list.add(field, false);
diff --git a/proxy/logging/LogAccess.cc b/proxy/logging/LogAccess.cc
index 99111f4..f903435 100644
--- a/proxy/logging/LogAccess.cc
+++ b/proxy/logging/LogAccess.cc
@@ -260,6 +260,11 @@ LOG_ACCESS_DEFAULT_FIELD(marshal_cache_result_code, DEFAULT_INT_FIELD)
/*-------------------------------------------------------------------------
-------------------------------------------------------------------------*/
+LOG_ACCESS_DEFAULT_FIELD(marshal_cache_result_subcode, DEFAULT_INT_FIELD)
+
+/*-------------------------------------------------------------------------
+ -------------------------------------------------------------------------*/
+
LOG_ACCESS_DEFAULT_FIELD(marshal_cache_hit_miss, DEFAULT_INT_FIELD)
/*-------------------------------------------------------------------------
diff --git a/proxy/logging/LogAccess.h b/proxy/logging/LogAccess.h
index 2e3d97a..85fb08a 100644
--- a/proxy/logging/LogAccess.h
+++ b/proxy/logging/LogAccess.h
@@ -207,6 +207,7 @@ public:
inkcoreapi virtual int marshal_proxy_resp_header_len(char *); // INT
inkcoreapi virtual int marshal_proxy_finish_status_code(char *); // INT
inkcoreapi virtual int marshal_cache_result_code(char *); // INT
+ inkcoreapi virtual int marshal_cache_result_subcode(char *); // INT
inkcoreapi virtual int marshal_proxy_host_port(char *); // INT
inkcoreapi virtual int marshal_cache_hit_miss(char *); // INT
diff --git a/proxy/logging/LogAccessHttp.cc b/proxy/logging/LogAccessHttp.cc
index 059d8af..b9732f8 100644
--- a/proxy/logging/LogAccessHttp.cc
+++ b/proxy/logging/LogAccessHttp.cc
@@ -971,6 +971,19 @@ LogAccessHttp::marshal_cache_result_code(char *buf)
-------------------------------------------------------------------------*/
int
+LogAccessHttp::marshal_cache_result_subcode(char *buf)
+{
+ if (buf) {
+ SquidSubcode code = m_http_sm->t_state.squid_codes.subcode;
+ marshal_int(buf, (int64_t)code);
+ }
+ return INK_MIN_ALIGN;
+}
+
+/*-------------------------------------------------------------------------
+ -------------------------------------------------------------------------*/
+
+int
LogAccessHttp::marshal_cache_hit_miss(char *buf)
{
if (buf) {
diff --git a/proxy/logging/LogAccessHttp.h b/proxy/logging/LogAccessHttp.h
index e998bb1..c10f260 100644
--- a/proxy/logging/LogAccessHttp.h
+++ b/proxy/logging/LogAccessHttp.h
@@ -93,6 +93,7 @@ public:
int marshal_proxy_resp_status_code(char *) override; // INT
int marshal_proxy_finish_status_code(char *) override; // INT
int marshal_cache_result_code(char *) override; // INT
+ int marshal_cache_result_subcode(char *) override; // INT
int marshal_cache_hit_miss(char *) override; // INT
//
--
To stop receiving notification emails like this one, please contact
dagit@apache.org.