Hi All, We think that we have identified a case where the Squid log will show the transaction result as TCP_HIT even though the cached page was expired.
We generate this condition (under ATS 6.1.1) by doing the following -- * Enable negative caching with 120s time-out * Request a page from the O.S. via ATS that results in a 404 being cached * Disable the connectivity between ATS and its DNS server (TTL is set for 30s) * Wait for 120+ seconds to elapse * Request the same page via ATS again We observed that the client receives 502 -- Cannot find server. However, the Squid log shows TCP_HIT/502. It appears that the Squid log entry is generated as a response to the O.S. DNS look-up failure without the appropriate via_string is set. * In HttpTransact::HandleCacheOpenReadHitFreshness() o The following is set -- SET_VIA_STRING(VIA_DETAIL_CACHE_LOOKUP, VIA_DETAIL_MISS_EXPIRED) o However, via_string[VIA_CACHE_RESULT] remains VIA_IN_CACHE_FRESH * In HttpTransactHeaders::generate_and_set_squid_codes(), the end result is a TCP_HIT. 1. Does this behavior look like a bug? 2. Any issues or side-effects with doing the following -- In HandleCacheOpenReadHitFreshness(), also SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_STALE) 3. In generate_and_set_squid_codes(), the above results in an interim log_code of SQUID_LOG_TCP_REFRESH_MISS Then change the error over-rides as follows -- case VIA_ERROR_CONNECTION : if ((log_code == SQUID_LOG_TCP_MISS) || (log_code == SQUID_LOG_TCP_REFRESH_MISS)) <-- add this log_code = SQUID_LOG_ERROR_CONNECT_FAIL This results in a final Squid log output of ERR_CONNECT_FAIL/502 Note that we also observed this behavior in a parent-child cache setup, but I still need to investigate if any additional changes are required to address that case. Appreciate any comments on this approach or any better recommendations. I can create a GitHub PR (ported to master) if there is consensus that this is a bug and on the approach to address it. Thanks, Peter