From d77db0adbd8198b5b3611bd3fb53bed960ed0035 Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Tue, 17 Apr 2018 11:50:27 +0100 Subject: Fix flash errors in performance bar for cached responses When a request contains an ETag value in its If-None-Match header, the backend may send a request ID (from Rack) that does not correspond to a value in Peek's Redis cache (because we aborted the Rails processing in our ETag middleware). Because a cached response (304) has to replace the headers with those from the previous 200 - https://tools.ietf.org/html/rfc7234#section-4.3.4 - we add a custom header that will only be present in cache hits, that can tell the frontend to ignore these. --- lib/gitlab/etag_caching/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/gitlab/etag_caching') diff --git a/lib/gitlab/etag_caching/middleware.rb b/lib/gitlab/etag_caching/middleware.rb index 1d6f5bb5e1c..d5d35dbd97f 100644 --- a/lib/gitlab/etag_caching/middleware.rb +++ b/lib/gitlab/etag_caching/middleware.rb @@ -50,7 +50,7 @@ module Gitlab status_code = Gitlab::PollingInterval.polling_enabled? ? 304 : 429 - [status_code, { 'ETag' => etag }, []] + [status_code, { 'ETag' => etag, 'X-Gitlab-From-Cache' => 'true' }, []] end def track_cache_miss(if_none_match, cached_value_present, route) -- cgit v1.2.3