diff options
author | Phil Hughes <me@iamphill.com> | 2018-04-17 11:45:03 +0000 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2018-04-20 09:56:12 +0100 |
commit | 836cc6bc53537bea3b17cda6126fefb3fc22e0f0 (patch) | |
tree | 4bc2ecaa66eeb3e160c1258a73c9a1b4e38711ca | |
parent | d676ef1fa88efffb53a553717ae420b498642199 (diff) | |
download | gitlab-ce-836cc6bc53537bea3b17cda6126fefb3fc22e0f0.tar.gz |
Merge branch '45406-error-getting-performance-bar-results-for-uuid-regularly-seen-in-production' into 'master'
Resolve ""Error getting performance bar results for [UUID]" regularly seen in production"
Closes #45406
See merge request gitlab-org/gitlab-ce!18419
-rw-r--r-- | app/assets/javascripts/performance_bar/services/performance_bar_service.js | 30 | ||||
-rw-r--r-- | lib/gitlab/etag_caching/middleware.rb | 2 |
2 files changed, 14 insertions, 18 deletions
diff --git a/app/assets/javascripts/performance_bar/services/performance_bar_service.js b/app/assets/javascripts/performance_bar/services/performance_bar_service.js index 3ebfaa87a4e..bc71911ae35 100644 --- a/app/assets/javascripts/performance_bar/services/performance_bar_service.js +++ b/app/assets/javascripts/performance_bar/services/performance_bar_service.js @@ -10,29 +10,25 @@ export default class PerformanceBarService { } static registerInterceptor(peekUrl, callback) { - vueResourceInterceptor = (request, next) => { - next(response => { - const requestId = response.headers['x-request-id']; - const requestUrl = response.url; - - if (requestUrl !== peekUrl && requestId) { - callback(requestId, requestUrl); - } - }); - }; - - Vue.http.interceptors.push(vueResourceInterceptor); - - return axios.interceptors.response.use(response => { + const interceptor = response => { const requestId = response.headers['x-request-id']; - const requestUrl = response.config.url; + // Get the request URL from response.config for Axios, and response for + // Vue Resource. + const requestUrl = (response.config || response).url; + const cachedResponse = response.headers['x-gitlab-from-cache'] === 'true'; - if (requestUrl !== peekUrl && requestId) { + if (requestUrl !== peekUrl && requestId && !cachedResponse) { callback(requestId, requestUrl); } return response; - }); + }; + + vueResourceInterceptor = (request, next) => next(interceptor); + + Vue.http.interceptors.push(vueResourceInterceptor); + + return axios.interceptors.response.use(interceptor); } static removeInterceptor(interceptor) { 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) |