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 2015/03/10 01:03:44 UTC
[1/2] trafficserver git commit: TS-3036 Add a new log tag format for
cache medium
Repository: trafficserver
Updated Branches:
refs/heads/master 1678555d0 -> 2660e4ced
TS-3036 Add a new log tag format for cache medium
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/90f9a5ce
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/90f9a5ce
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/90f9a5ce
Branch: refs/heads/master
Commit: 90f9a5ce07450732c032cecc90ff87843238c218
Parents: 1678555
Author: Leif Hedstrom <zw...@apache.org>
Authored: Fri Nov 21 08:30:07 2014 -0700
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Mon Mar 9 17:39:57 2015 -0600
----------------------------------------------------------------------
proxy/hdrs/HTTP.h | 29 ++++++++++++++++++-----------
proxy/http/HttpSM.cc | 14 ++++++++++++--
proxy/http/HttpTransact.cc | 6 ++++--
proxy/http/HttpTransact.h | 8 ++++----
proxy/http/HttpTransactHeaders.cc | 14 ++++++++------
proxy/logging/Log.cc | 34 ++++++++++++++++++++++++++++++++++
proxy/logging/LogAccess.cc | 27 +++++++++++++++++++++++++++
proxy/logging/LogAccess.h | 2 ++
proxy/logging/LogAccessHttp.cc | 13 +++++++++++++
proxy/logging/LogAccessHttp.h | 1 +
proxy/logging/LogAccessTest.cc | 13 +++++++++++++
proxy/logging/LogAccessTest.h | 1 +
12 files changed, 137 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/hdrs/HTTP.h
----------------------------------------------------------------------
diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h
index b686f3c..0f5daff 100644
--- a/proxy/hdrs/HTTP.h
+++ b/proxy/hdrs/HTTP.h
@@ -204,16 +204,17 @@ enum SquidHierarchyCode
/* squid hit/miss codes */
enum SquidHitMissCode
{
- SQUID_HIT_RESERVED = '0',
- SQUID_HIT_LEVEL_1 = '1',
- SQUID_HIT_LEVEL_2 = '2',
- SQUID_HIT_LEVEL_3 = '3',
- SQUID_HIT_LEVEL_4 = '4',
- SQUID_HIT_LEVEL_5 = '5',
- SQUID_HIT_LEVEL_6 = '6',
- SQUID_HIT_LEVEL_7 = '7',
- SQUID_HIT_LEVEL_8 = '8',
- SQUID_HIT_LEVEl_9 = '9',
+ SQUID_HIT_RESERVED = '0', // Kinda wonky that this is '0', so skipping 'A' for now
+ SQUID_HIT_LEVEL_1 = 'B',
+ SQUID_HIT_LEVEL_2 = 'C',
+ SQUID_HIT_LEVEL_3 = 'D',
+ SQUID_HIT_LEVEL_4 = 'E',
+ SQUID_HIT_LEVEL_5 = 'F',
+ SQUID_HIT_LEVEL_6 = 'G',
+ SQUID_HIT_LEVEL_7 = 'H',
+ SQUID_HIT_LEVEL_8 = 'I',
+ SQUID_HIT_LEVEl_9 = 'J',
+ SQUID_HIT_LEVEL_10 = 'K',
SQUID_MISS_NONE = '1',
SQUID_MISS_ICP_AUTH = '2',
SQUID_MISS_HTTP_NON_CACHE = '3',
@@ -226,7 +227,13 @@ enum SquidHitMissCode
SQUID_MISS_PRE_EXPIRED = 'a',
SQUID_MISS_ERROR = 'b',
SQUID_MISS_CACHE_BYPASS = 'c',
- SQUID_HIT_MISS_INVALID_ASSIGNED_CODE = 'z'
+ SQUID_HIT_MISS_INVALID_ASSIGNED_CODE = 'z',
+ // These are pre-allocated with special semantics, added here for convenience
+ SQUID_HIT_RAM = SQUID_HIT_LEVEL_1,
+ SQUID_HIT_SSD = SQUID_HIT_LEVEL_2,
+ SQUID_HIT_DISK = SQUID_HIT_LEVEL_3,
+ SQUID_HIT_CLUSTER = SQUID_HIT_LEVEL_4,
+ SQUID_HIT_NET = SQUID_HIT_LEVEL_5
};
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/http/HttpSM.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index a544246..bdbe1d0 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -2446,7 +2446,12 @@ HttpSM::state_cache_open_write(int event, void *data)
// The write vector was locked and the cache_sm retried
// and got the read vector again.
cache_sm.cache_read_vc->get_http_info(&t_state.cache_info.object_read);
- t_state.cache_info.is_ram_cache_hit = (cache_sm.cache_read_vc)->is_ram_cache_hit();
+ // ToDo: Should support other levels of cache hits here, but the cache does not support it (yet)
+ if (cache_sm.cache_read_vc->is_ram_cache_hit()) {
+ t_state.cache_info.hit_miss_code = SQUID_HIT_RAM;
+ } else {
+ t_state.cache_info.hit_miss_code = SQUID_HIT_DISK;
+ }
ink_assert(t_state.cache_info.object_read != 0);
t_state.source = HttpTransact::SOURCE_CACHE;
@@ -2530,7 +2535,12 @@ HttpSM::state_cache_open_read(int event, void *data)
t_state.source = HttpTransact::SOURCE_CACHE;
cache_sm.cache_read_vc->get_http_info(&t_state.cache_info.object_read);
- t_state.cache_info.is_ram_cache_hit = (cache_sm.cache_read_vc)->is_ram_cache_hit();
+ // ToDo: Should support other levels of cache hits here, but the cache does not support it (yet)
+ if (cache_sm.cache_read_vc->is_ram_cache_hit()) {
+ t_state.cache_info.hit_miss_code = SQUID_HIT_RAM;
+ } else {
+ t_state.cache_info.hit_miss_code = SQUID_HIT_DISK;
+ }
ink_assert(t_state.cache_info.object_read != 0);
call_transact_and_set_next_state(HttpTransact::HandleCacheOpenRead);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/http/HttpTransact.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 0097a67..1d5ae5f 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -2696,7 +2696,8 @@ HttpTransact::HandleCacheOpenReadHit(State* s)
DebugTxn("http_trans", "CacheOpenRead --- HIT-FRESH");
DebugTxn("http_seq", "[HttpTransact::HandleCacheOpenReadHit] " "Serve from cache");
- if (s->cache_info.is_ram_cache_hit) {
+ // ToDo: Should support other levels of cache hits here, but the cache does not support it (yet)
+ if (SQUID_HIT_RAM == s->cache_info.hit_miss_code) {
SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_RAM_CACHE_FRESH);
} else {
SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_FRESH);
@@ -6933,7 +6934,8 @@ bool
HttpTransact::delete_all_document_alternates_and_return(State* s, bool cache_hit)
{
if (cache_hit == true) {
- if (s->cache_info.is_ram_cache_hit) {
+ // ToDo: Should support other levels of cache hits here, but the cache does not support it (yet)
+ if (SQUID_HIT_RAM == s->cache_info.hit_miss_code) {
SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_RAM_CACHE_FRESH);
} else {
SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_FRESH);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/http/HttpTransact.h
----------------------------------------------------------------------
diff --git a/proxy/http/HttpTransact.h b/proxy/http/HttpTransact.h
index 4219677..86660ec 100644
--- a/proxy/http/HttpTransact.h
+++ b/proxy/http/HttpTransact.h
@@ -646,7 +646,7 @@ public:
int open_write_retries;
CacheWriteLock_t write_lock_state;
int lookup_count;
- bool is_ram_cache_hit;
+ SquidHitMissCode hit_miss_code;
_CacheLookupInfo()
: action(CACHE_DO_UNDEFINED),
@@ -664,9 +664,9 @@ public:
directives(),
open_read_retries(0),
open_write_retries(0),
- write_lock_state(CACHE_WL_INIT),
- lookup_count(0),
- is_ram_cache_hit(false)
+ write_lock_state(CACHE_WL_INIT),
+ lookup_count(0),
+ hit_miss_code(SQUID_MISS_NONE)
{ }
} CacheLookupInfo;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/http/HttpTransactHeaders.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpTransactHeaders.cc b/proxy/http/HttpTransactHeaders.cc
index f539c7a..aa97296 100644
--- a/proxy/http/HttpTransactHeaders.cc
+++ b/proxy/http/HttpTransactHeaders.cc
@@ -512,12 +512,15 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header,
(via_string[VIA_DETAIL_CACHE_LOOKUP] == VIA_DETAIL_MISS_CONDITIONAL) ||
(via_string[VIA_DETAIL_CACHE_LOOKUP] == VIA_DETAIL_HIT_SERVED)) {
// its a cache hit.
- // INKqa10331
- hit_miss_code = SQUID_HIT_RESERVED;
+ if (via_string[VIA_CACHE_RESULT] == VIA_IN_RAM_CACHE_FRESH) {
+ hit_miss_code = SQUID_HIT_RAM;
+ } else { // TODO: Support other cache tiers here
+ hit_miss_code = SQUID_HIT_RESERVED;
+ }
} else {
int reason_len;
const char *reason = header->reason_get(&reason_len);
- // INKqa10331
+
if (reason != NULL && reason_len >= 24 && reason[0] == '!' && reason[1] == SQUID_HIT_RESERVED)
hit_miss_code = SQUID_HIT_RESERVED;
// its a miss in the cache. find out why.
@@ -647,9 +650,8 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header,
break;
}
- Debug("http_trans",
- "[Squid code generation] Hit/Miss: %d, Log: %d, Hier: %d",
- hit_miss_code, log_code, hier_code);
+ Debug("http_trans", "[Squid code generation] Hit/Miss: %c, Log: %c, Hier: %c", hit_miss_code, log_code, hier_code);
+
squid_codes->log_code = log_code;
squid_codes->hier_code = hier_code;
squid_codes->hit_miss_code = hit_miss_code;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/Log.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index c4b8fa6..e8ce657 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -626,6 +626,32 @@ Log::init_fields()
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(24,
+ SQUID_HIT_RESERVED, "HIT",
+ SQUID_HIT_LEVEL_1, "HIT_RAM", // Also SQUID_HIT_RAM
+ SQUID_HIT_LEVEL_2, "HIT_SSD", // Also SQUID_HIT_SSD
+ SQUID_HIT_LEVEL_3, "HIT_DISK", // Also SQUID_HIT_DISK
+ SQUID_HIT_LEVEL_4, "HIT_CLUSTER", // Also SQUID_HIT_CLUSTER
+ SQUID_HIT_LEVEL_5, "HIT_NET", // Also SQUID_HIT_NET
+ SQUID_HIT_LEVEL_6, "HIT_LEVEL_6",
+ SQUID_HIT_LEVEL_7, "HIT_LEVEL_7",
+ SQUID_HIT_LEVEL_8, "HIT_LEVEL_8",
+ SQUID_HIT_LEVEl_9, "HIT_LEVEL_9",
+ SQUID_MISS_NONE, "MISS",
+ SQUID_MISS_ICP_AUTH, "MISS_ICP_AUTH",
+ SQUID_MISS_HTTP_NON_CACHE, "MISS_HTTP_NON_CACHE",
+ SQUID_MISS_ICP_STOPLIST, "MISS_ICP_STOPLIST",
+ SQUID_MISS_HTTP_NO_DLE, "MISS_HTTP_NO_DLE",
+ SQUID_MISS_HTTP_NO_LE, "MISS_HTTP_NO_LE",
+ SQUID_MISS_HTTP_CONTENT, "MISS_HTTP_CONTENT",
+ SQUID_MISS_PRAGMA_NOCACHE, "MISS_PRAGMA_NOCACHE",
+ SQUID_MISS_PASS, "MISS_PASS",
+ SQUID_MISS_PRE_EXPIRED, "MISS_PRE_EXPIRED",
+ SQUID_MISS_ERROR, "MISS_ERROR",
+ SQUID_MISS_CACHE_BYPASS, "MISS_CACHE_BYPASS",
+ SQUID_HIT_MISS_INVALID_ASSIGNED_CODE, "INVALID_CODE");
+
field = new LogField("cache_result_code", "crc",
LogField::sINT,
&LogAccess::marshal_cache_result_code,
@@ -634,6 +660,14 @@ Log::init_fields()
global_field_list.add(field, false);
ink_hash_table_insert(field_symbol_hash, "crc", field);
+ field = new LogField("cache_hit_miss", "chm",
+ LogField::sINT,
+ &LogAccess::marshal_cache_hit_miss,
+ &LogAccess::unmarshal_cache_hit_miss,
+ (Ptr<LogFieldAliasMap>) cache_hit_miss_map);
+ global_field_list.add(field, false);
+ ink_hash_table_insert(field_symbol_hash, "chm", field);
+
// proxy -> server fields
field = new LogField("proxy_req_header_len", "pqhl",
LogField::sINT,
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/LogAccess.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccess.cc b/proxy/logging/LogAccess.cc
index ce5f04c..cb295a3 100644
--- a/proxy/logging/LogAccess.cc
+++ b/proxy/logging/LogAccess.cc
@@ -301,6 +301,15 @@ LogAccess::marshal_cache_result_code(char *buf)
-------------------------------------------------------------------------*/
int
+LogAccess::marshal_cache_hit_miss(char *buf)
+{
+ DEFAULT_INT_FIELD;
+}
+
+/*-------------------------------------------------------------------------
+ -------------------------------------------------------------------------*/
+
+int
LogAccess::marshal_proxy_req_header_len(char *buf)
{
DEFAULT_INT_FIELD;
@@ -1331,6 +1340,24 @@ LogAccess::unmarshal_cache_code(char **buf, char *dest, int len, Ptr<LogFieldAli
}
/*-------------------------------------------------------------------------
+ LogAccess::unmarshal_cache_hit_miss
+
+ Retrieve the int pointed at by the buffer and treat as a SquidHitMissCode.
+ Use this to index into the local string tables and return the string
+ equiv of the enum. Advance the pointer.
+ -------------------------------------------------------------------------*/
+
+int
+LogAccess::unmarshal_cache_hit_miss(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map)
+{
+ ink_assert(buf != NULL);
+ ink_assert(*buf != NULL);
+ ink_assert(dest != NULL);
+
+ return (LogAccess::unmarshal_with_map(unmarshal_int(buf), dest, len, map, "HIT_MISS_UNKNOWN"));
+}
+
+/*-------------------------------------------------------------------------
LogAccess::unmarshal_entry_type
-------------------------------------------------------------------------*/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/LogAccess.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccess.h b/proxy/logging/LogAccess.h
index 9b1a615..f422c0e 100644
--- a/proxy/logging/LogAccess.h
+++ b/proxy/logging/LogAccess.h
@@ -197,6 +197,7 @@ public:
inkcoreapi virtual int marshal_proxy_finish_status_code(char *); // INT
inkcoreapi virtual int marshal_cache_result_code(char *); // INT
inkcoreapi virtual int marshal_proxy_host_port(char *); // INT
+ inkcoreapi virtual int marshal_cache_hit_miss(char *); // INT
//
// proxy -> server fields
@@ -300,6 +301,7 @@ public:
static int unmarshal_hierarchy(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
static int unmarshal_finish_status(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
static int unmarshal_cache_code(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
+ static int unmarshal_cache_hit_miss(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
static int unmarshal_entry_type(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
static int unmarshal_cache_write_code(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
static int unmarshal_client_protocol_stack(char **buf, char *dest, int len, Ptr<LogFieldAliasMap> map);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/LogAccessHttp.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccessHttp.cc b/proxy/logging/LogAccessHttp.cc
index 9b41850..d58f58a 100644
--- a/proxy/logging/LogAccessHttp.cc
+++ b/proxy/logging/LogAccessHttp.cc
@@ -724,6 +724,19 @@ LogAccessHttp::marshal_cache_result_code(char *buf)
-------------------------------------------------------------------------*/
int
+LogAccessHttp::marshal_cache_hit_miss(char *buf)
+{
+ if (buf) {
+ SquidHitMissCode code = m_http_sm->t_state.squid_codes.hit_miss_code;
+ marshal_int(buf, (int64_t) code);
+ }
+ return INK_MIN_ALIGN;
+}
+
+/*-------------------------------------------------------------------------
+ -------------------------------------------------------------------------*/
+
+int
LogAccessHttp::marshal_proxy_req_header_len(char *buf)
{
if (buf) {
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/LogAccessHttp.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccessHttp.h b/proxy/logging/LogAccessHttp.h
index dc392f5..8b6d5e7 100644
--- a/proxy/logging/LogAccessHttp.h
+++ b/proxy/logging/LogAccessHttp.h
@@ -82,6 +82,7 @@ public:
virtual int marshal_proxy_resp_header_len(char *); // INT
virtual int marshal_proxy_finish_status_code(char *); // INT
virtual int marshal_cache_result_code(char *); // INT
+ virtual int marshal_cache_hit_miss(char *); // INT
//
// proxy -> server fields
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/LogAccessTest.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccessTest.cc b/proxy/logging/LogAccessTest.cc
index 22e2f2a..c58e8f9 100644
--- a/proxy/logging/LogAccessTest.cc
+++ b/proxy/logging/LogAccessTest.cc
@@ -274,6 +274,19 @@ LogAccessTest::marshal_cache_result_code(char *buf)
-------------------------------------------------------------------------*/
int
+LogAccessTest::marshal_cache_miss_hit(char *buf)
+{
+ if (buf) {
+ int64_t val = 10;
+ marshal_int(buf, val);
+ }
+ return sizeof(int64_t);
+}
+
+/*-------------------------------------------------------------------------
+ -------------------------------------------------------------------------*/
+
+int
LogAccessTest::marshal_proxy_req_header_len(char *buf)
{
if (buf) {
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/90f9a5ce/proxy/logging/LogAccessTest.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccessTest.h b/proxy/logging/LogAccessTest.h
index 32629fd..ee1ea5c 100644
--- a/proxy/logging/LogAccessTest.h
+++ b/proxy/logging/LogAccessTest.h
@@ -69,6 +69,7 @@ public:
virtual int marshal_proxy_resp_header_len(char *); // INT
virtual int marshal_proxy_finish_status_code(char *); // INT
virtual int marshal_cache_result_code(char *); // INT
+ virtual int marshal_cache_miss_hit(char *); // INT
//
// proxy -> server fields
[2/2] trafficserver git commit: TS-3036 Add "chm" to the docs.
Posted by zw...@apache.org.
TS-3036 Add "chm" to the docs.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/2660e4ce
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/2660e4ce
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/2660e4ce
Branch: refs/heads/master
Commit: 2660e4ceda0899e429d792512aa19bf7b6868827
Parents: 90f9a5c
Author: Leif Hedstrom <zw...@apache.org>
Authored: Mon Mar 9 18:03:00 2015 -0600
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Mon Mar 9 18:03:00 2015 -0600
----------------------------------------------------------------------
doc/admin/event-logging-formats.en.rst | 9 +++++++++
1 file changed, 9 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2660e4ce/doc/admin/event-logging-formats.en.rst
----------------------------------------------------------------------
diff --git a/doc/admin/event-logging-formats.en.rst b/doc/admin/event-logging-formats.en.rst
index bd70702..0e658db 100644
--- a/doc/admin/event-logging-formats.en.rst
+++ b/doc/admin/event-logging-formats.en.rst
@@ -252,6 +252,15 @@ The following list describes Traffic Server custom logging fields.
The cache result code; specifies how the cache responded to the
request (``HIT``, ``MISS``, and so on).
+.. _chm:
+
+``chm``
+ The cache hit-miss status, specifying which level of the cache this
+ was served out of. This is useful for example to show whether it was a
+ RAM cache vs disk cache hit. Future versions of the cache will support
+ more levels, but right now it only supports RAM (``HIT_RAM``) vs
+ rotational disk (``HIT_DISK``).
+
.. _csscl:
``csscl``