diff --git a/doc/admin-guide/logging/cache-results.en.rst b/doc/admin-guide/logging/cache-results.en.rst index 4edb2d39b0f..18210c26905 100644 --- a/doc/admin-guide/logging/cache-results.en.rst +++ b/doc/admin-guide/logging/cache-results.en.rst @@ -102,6 +102,14 @@ TCP_HIT A valid copy of the requested object was in the cache and Traffic Server sent the object to the client. +.. _crc-tcp-cf-hit: + +TCP_CF_HIT +------- + +A valid copy of the requested object is being updated in the cache and Traffic Server sent +the object to the client. + .. _crc-tcp-miss: TCP_MISS diff --git a/doc/admin-guide/logging/formatting.en.rst b/doc/admin-guide/logging/formatting.en.rst index d9dbc1b6792..0dd176cbf00 100644 --- a/doc/admin-guide/logging/formatting.en.rst +++ b/doc/admin-guide/logging/formatting.en.rst @@ -170,7 +170,8 @@ 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``). + only RAM (``HIT_RAM``), disk (``HIT_DISK``) and Read While Write (``HIT_RWW``). + HIT_RWW could imply either HIT_RAM or HIT_DISK. cwr Proxy Cache Cache Write Result. Specifies the result of attempting to write to cache: not relevant (``-``), no cache write (``WL_MISS``), write interrupted (``INTR``), error while diff --git a/doc/admin-guide/monitoring/statistics/core/cache.en.rst b/doc/admin-guide/monitoring/statistics/core/cache.en.rst index 3ee22e1269a..62ba1ee4471 100644 --- a/doc/admin-guide/monitoring/statistics/core/cache.en.rst +++ b/doc/admin-guide/monitoring/statistics/core/cache.en.rst @@ -183,6 +183,7 @@ Cache .. ts:stat:: global proxy.process.http.cache_hit_fresh integer .. ts:stat:: global proxy.process.http.cache_hit_ims integer .. ts:stat:: global proxy.process.http.cache_hit_mem_fresh integer +.. ts:stat:: global proxy.process.http.cache_hit_rww integer .. ts:stat:: global proxy.process.http.cache_hit_revalidated integer .. ts:stat:: global proxy.process.http.cache_hit_stale_served integer .. ts:stat:: global proxy.process.http.cache_lookups integer diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h index 144255d4bb9..3196f08166d 100644 --- a/proxy/hdrs/HTTP.h +++ b/proxy/hdrs/HTTP.h @@ -154,6 +154,7 @@ enum SquidLogCode { SQUID_LOG_ERR_NO_RELAY = 'C', SQUID_LOG_ERR_DISK_IO = 'D', SQUID_LOG_ERR_ZERO_SIZE_OBJECT = 'E', + SQUID_LOG_TCP_CF_HIT = 'F', // Collapsed forwarding HIT also known as Read while write hit SQUID_LOG_ERR_PROXY_DENIED = 'G', SQUID_LOG_ERR_WEBFETCH_DETECTED = 'H', SQUID_LOG_ERR_FUTURE_1 = 'I', @@ -236,7 +237,8 @@ enum SquidHitMissCode { 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 + SQUID_HIT_NET = SQUID_HIT_LEVEL_5, + SQUID_HIT_RWW = SQUID_HIT_LEVEL_6 }; enum HTTPType { diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc index 59bab2f3b66..cb8c3b72ae8 100644 --- a/proxy/http/HttpConfig.cc +++ b/proxy/http/HttpConfig.cc @@ -619,6 +619,8 @@ register_stat_callbacks() RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.cache_hit_mem_fresh", RECD_COUNTER, RECP_PERSISTENT, (int)http_cache_hit_mem_fresh_stat, RecRawStatSyncCount); + RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.cache_hit_rww", RECD_COUNTER, RECP_PERSISTENT, + (int)http_cache_hit_rww_stat, RecRawStatSyncCount); RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.cache_hit_revalidated", RECD_COUNTER, RECP_PERSISTENT, (int)http_cache_hit_reval_stat, RecRawStatSyncCount); diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h index 81fe5f901b6..55a8509dda5 100644 --- a/proxy/http/HttpConfig.h +++ b/proxy/http/HttpConfig.h @@ -177,6 +177,7 @@ enum { // cache result stats http_cache_hit_fresh_stat, http_cache_hit_mem_fresh_stat, + http_cache_hit_rww_stat, http_cache_hit_reval_stat, http_cache_hit_ims_stat, http_cache_hit_stale_served_stat, diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc index ebeb43c5c0c..fe228d8da2e 100644 --- a/proxy/http/HttpTransact.cc +++ b/proxy/http/HttpTransact.cc @@ -2933,6 +2933,11 @@ HttpTransact::HandleCacheOpenReadHit(State *s) SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_FRESH); } + HttpCacheSM &cache_sm = s->state_machine->get_cache_sm(); + TxnDebug("http_trans", "CacheOpenRead --- HIT-FRESH read while write %d", cache_sm.is_readwhilewrite_inprogress()); + if (cache_sm.is_readwhilewrite_inprogress()) + SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_RWW_HIT); + if (s->cache_lookup_result == CACHE_LOOKUP_HIT_WARNING) { build_response_from_cache(s, HTTP_WARNING_CODE_HERUISTIC_EXPIRATION); } else if (s->cache_lookup_result == CACHE_LOOKUP_HIT_STALE) { @@ -8288,6 +8293,11 @@ HttpTransact::client_result_stat(State *s, ink_hrtime total_time, ink_hrtime req client_transaction_result = CLIENT_TRANSACTION_RESULT_ERROR_CONNECT_FAIL; break; + case SQUID_LOG_TCP_CF_HIT: + HTTP_INCREMENT_DYN_STAT(http_cache_hit_rww_stat); + client_transaction_result = CLIENT_TRANSACTION_RESULT_HIT_FRESH; + break; + case SQUID_LOG_TCP_MEM_HIT: HTTP_INCREMENT_DYN_STAT(http_cache_hit_mem_fresh_stat); // fallthrough @@ -8633,6 +8643,7 @@ HttpTransact::update_size_and_time_stats(State *s, ink_hrtime total_time, ink_hr switch (s->squid_codes.log_code) { case SQUID_LOG_TCP_HIT: case SQUID_LOG_TCP_MEM_HIT: + case SQUID_LOG_TCP_CF_HIT: // It's possible to have two stat's instead of one, if needed. HTTP_INCREMENT_DYN_STAT(http_tcp_hit_count_stat); HTTP_SUM_DYN_STAT(http_tcp_hit_user_agent_bytes_stat, user_agent_bytes); diff --git a/proxy/http/HttpTransact.h b/proxy/http/HttpTransact.h index 686d8b4d998..ed091c64db7 100644 --- a/proxy/http/HttpTransact.h +++ b/proxy/http/HttpTransact.h @@ -124,6 +124,7 @@ enum ViaString_t { VIA_IN_CACHE_STALE = 'S', VIA_IN_CACHE_FRESH = 'H', VIA_IN_RAM_CACHE_FRESH = 'R', + VIA_IN_CACHE_RWW_HIT = 'W', // server stuff VIA_SERVER_STRING = 's', VIA_SERVER_ERROR = 'E', diff --git a/proxy/http/HttpTransactHeaders.cc b/proxy/http/HttpTransactHeaders.cc index 4ce00370297..ea664421bd3 100644 --- a/proxy/http/HttpTransactHeaders.cc +++ b/proxy/http/HttpTransactHeaders.cc @@ -462,6 +462,8 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header, char *via_str // its a cache hit. if (via_string[VIA_CACHE_RESULT] == VIA_IN_RAM_CACHE_FRESH) { hit_miss_code = SQUID_HIT_RAM; + } else if (via_string[VIA_CACHE_RESULT] == VIA_IN_CACHE_RWW_HIT) { + hit_miss_code = SQUID_HIT_RWW; } else { // TODO: Support other cache tiers here hit_miss_code = SQUID_HIT_RESERVED; } @@ -525,6 +527,8 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header, char *via_str log_code = SQUID_LOG_TCP_HIT; } else if (via_string[VIA_CACHE_RESULT] == VIA_IN_RAM_CACHE_FRESH) { log_code = SQUID_LOG_TCP_MEM_HIT; + } else if (via_string[VIA_CACHE_RESULT] == VIA_IN_CACHE_RWW_HIT) { + log_code = SQUID_LOG_TCP_CF_HIT; // Read while write HIT } else { log_code = SQUID_LOG_TCP_MISS; } diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc index 56c373dcadf..4bcff72f77b 100644 --- a/proxy/logging/Log.cc +++ b/proxy/logging/Log.cc @@ -613,7 +613,7 @@ Log::init_fields() Ptr cache_code_map = make_ptr(new LogFieldAliasTable); 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, + 53, 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, @@ -632,7 +632,7 @@ Log::init_fields() "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_LOOP_DETECTED, - "ERR_LOOP_DETECTED", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN"); + "ERR_LOOP_DETECTED", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN", SQUID_LOG_TCP_CF_HIT, "TCP_CF_HIT"); Ptr cache_subcode_map = make_ptr(new LogFieldAliasTable); cache_subcode_map->init(2, SQUID_SUBCODE_EMPTY, "NONE", SQUID_SUBCODE_NUM_REDIRECTIONS_EXCEEDED, "NUM_REDIRECTIONS_EXCEEDED"); @@ -643,7 +643,7 @@ Log::init_fields() 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_6, "HIT_RWW", 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_HTTP_NON_CACHE, "MISS_HTTP_NON_CACHE", 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, diff --git a/proxy/logging/LogAccess.cc b/proxy/logging/LogAccess.cc index 02db557c700..2d05e813ef7 100644 --- a/proxy/logging/LogAccess.cc +++ b/proxy/logging/LogAccess.cc @@ -2784,7 +2784,8 @@ LogAccess::marshal_cache_collapsed_connection_success(char *buf) // We increment open_write_tries beyond the max when we want to jump back to the read state for collapsing if ((m_http_sm->get_cache_sm().get_open_write_tries() > (m_http_sm->t_state.txn_conf->max_cache_open_write_retries)) && - ((code == SQUID_LOG_TCP_HIT) || (code == SQUID_LOG_TCP_MEM_HIT) || (code == SQUID_LOG_TCP_DISK_HIT))) { + ((code == SQUID_LOG_TCP_HIT) || (code == SQUID_LOG_TCP_MEM_HIT) || (code == SQUID_LOG_TCP_DISK_HIT) || + (code == SQUID_LOG_TCP_CF_HIT))) { // Attempted collapsed connection and got a hit, success id = 1; } else if (m_http_sm->get_cache_sm().get_open_write_tries() > (m_http_sm->t_state.txn_conf->max_cache_open_write_retries)) { diff --git a/src/traffic_logstats/logstats.cc b/src/traffic_logstats/logstats.cc index c581e1f223a..ca24b45197f 100644 --- a/src/traffic_logstats/logstats.cc +++ b/src/traffic_logstats/logstats.cc @@ -126,6 +126,7 @@ struct OriginStats { struct { ElapsedStats hit; ElapsedStats hit_ram; + ElapsedStats hit_rww; ElapsedStats ims; ElapsedStats refresh; ElapsedStats other; @@ -144,6 +145,7 @@ struct OriginStats { struct { StatsCounter hit; StatsCounter hit_ram; + StatsCounter hit_rww; StatsCounter ims; StatsCounter refresh; StatsCounter other; @@ -424,6 +426,7 @@ class UrlLru case SQUID_LOG_TCP_REFRESH_HIT: case SQUID_LOG_TCP_DISK_HIT: case SQUID_LOG_TCP_MEM_HIT: + case SQUID_LOG_TCP_CF_HIT: case SQUID_LOG_TCP_REF_FAIL_HIT: case SQUID_LOG_UDP_HIT: case SQUID_LOG_UDP_WEAK_HIT: @@ -498,6 +501,7 @@ class UrlLru case SQUID_LOG_TCP_REFRESH_HIT: case SQUID_LOG_TCP_DISK_HIT: case SQUID_LOG_TCP_MEM_HIT: + case SQUID_LOG_TCP_CF_HIT: case SQUID_LOG_TCP_REF_FAIL_HIT: case SQUID_LOG_UDP_HIT: case SQUID_LOG_UDP_WEAK_HIT: @@ -791,6 +795,7 @@ init_elapsed(OriginStats *stats) { stats->elapsed.hits.hit.min = -1; stats->elapsed.hits.hit_ram.min = -1; + stats->elapsed.hits.hit_rww.min = -1; stats->elapsed.hits.ims.min = -1; stats->elapsed.hits.refresh.min = -1; stats->elapsed.hits.other.min = -1; @@ -874,6 +879,12 @@ update_results_elapsed(OriginStats *stat, int result, int elapsed, int size) update_elapsed(stat->elapsed.hits.hit_ram, elapsed, stat->results.hits.hit_ram); update_elapsed(stat->elapsed.hits.total, elapsed, stat->results.hits.total); break; + case SQUID_LOG_TCP_CF_HIT: + update_counter(stat->results.hits.hit_rww, size); + update_counter(stat->results.hits.total, size); + update_elapsed(stat->elapsed.hits.hit_rww, elapsed, stat->results.hits.hit_rww); + update_elapsed(stat->elapsed.hits.total, elapsed, stat->results.hits.total); + break; case SQUID_LOG_TCP_MISS: update_counter(stat->results.misses.miss, size); update_counter(stat->results.misses.total, size); @@ -2015,6 +2026,7 @@ print_detail_stats(const OriginStats *stat, bool json, bool concise) format_line(json ? "hit.direct" : "Cache hit", stat->results.hits.hit, stat->total, json, concise); format_line(json ? "hit.ram" : "Cache hit RAM", stat->results.hits.hit_ram, stat->total, json, concise); + format_line(json ? "hit.rww" : "Cache hit RWW", stat->results.hits.hit_rww, stat->total, json, concise); format_line(json ? "hit.ims" : "Cache hit IMS", stat->results.hits.ims, stat->total, json, concise); format_line(json ? "hit.refresh" : "Cache hit refresh", stat->results.hits.refresh, stat->total, json, concise); format_line(json ? "hit.other" : "Cache hit other", stat->results.hits.other, stat->total, json, concise); @@ -2245,6 +2257,7 @@ print_detail_stats(const OriginStats *stat, bool json, bool concise) format_elapsed_line(json ? "hit.direct.latency" : "Cache hit", stat->elapsed.hits.hit, json, concise); format_elapsed_line(json ? "hit.ram.latency" : "Cache hit RAM", stat->elapsed.hits.hit_ram, json, concise); + format_elapsed_line(json ? "hit.rww.latency" : "Cache hit RWW", stat->elapsed.hits.hit_rww, json, concise); format_elapsed_line(json ? "hit.ims.latency" : "Cache hit IMS", stat->elapsed.hits.ims, json, concise); format_elapsed_line(json ? "hit.refresh.latency" : "Cache hit refresh", stat->elapsed.hits.refresh, json, concise); format_elapsed_line(json ? "hit.other.latency" : "Cache hit other", stat->elapsed.hits.other, json, concise); diff --git a/src/traffic_logstats/tests/logstats.json b/src/traffic_logstats/tests/logstats.json index a72cfab0463..f12731142b9 100644 --- a/src/traffic_logstats/tests/logstats.json +++ b/src/traffic_logstats/tests/logstats.json @@ -1,6 +1,7 @@ { "total": { "hit.direct" : { "req": "19", "req_pct": "47.50", "bytes": "9216303", "bytes_pct": "64.52" }, "hit.ram" : { "req": "8", "req_pct": "20.00", "bytes": "1486946", "bytes_pct": "10.41" }, + "hit.rww" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.ims" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.refresh" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, @@ -114,6 +115,7 @@ "content.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.direct.latency" : { "min": "2", "max": "269", "avg": "59.16", "dev": "88.68" }, "hit.ram.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, + "hit.rww.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.ims.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.refresh.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.other.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, @@ -127,6 +129,7 @@ "i.imgur.com": { "hit.direct" : { "req": "19", "req_pct": "52.78", "bytes": "9216303", "bytes_pct": "64.58" }, "hit.ram" : { "req": "8", "req_pct": "22.22", "bytes": "1486946", "bytes_pct": "10.42" }, + "hit.rww" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.ims" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.refresh" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, @@ -240,6 +243,7 @@ "content.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.direct.latency" : { "min": "2", "max": "269", "avg": "59.16", "dev": "88.68" }, "hit.ram.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, + "hit.rww.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.ims.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.refresh.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.other.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, @@ -253,6 +257,7 @@ "i.imgur.com:443": { "hit.direct" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.ram" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, + "hit.rww" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.ims" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.refresh" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, @@ -366,6 +371,7 @@ "content.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" }, "hit.direct.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.ram.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, + "hit.rww.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.ims.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.refresh.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, "hit.other.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" }, diff --git a/src/traffic_logstats/tests/logstats.summary b/src/traffic_logstats/tests/logstats.summary index ee82aa3ff71..111812f9a4c 100644 --- a/src/traffic_logstats/tests/logstats.summary +++ b/src/traffic_logstats/tests/logstats.summary @@ -4,6 +4,7 @@ Request Result Count Percent Bytes Percent ------------------------------------------------------------------------------ Cache hit 19 47.50% 8.79MB 64.52% Cache hit RAM 8 20.00% 1.42MB 10.41% +Cache hit RWW 0 0.00% 0.00KB 0.00% Cache hit IMS 0 0.00% 0.00KB 0.00% Cache hit refresh 0 0.00% 0.00KB 0.00% Cache hit other 0 0.00% 0.00KB 0.00% @@ -157,6 +158,7 @@ Elapsed time stats Min Max Avg Std Deviation ------------------------------------------------------------------------------ Cache hit 2 269 59.16 88.68 Cache hit RAM 0 0 0.00 0.00 +Cache hit RWW 0 0 0.00 0.00 Cache hit IMS 0 0 0.00 0.00 Cache hit refresh 0 0 0.00 0.00 Cache hit other 0 0 0.00 0.00