Re-implement `Peek::Views::GC` to process requests only when Performance Bar is active in `production`

Previously, Peek::Views::GC was enabled in production ENV and it processed every request even if Performance Bar was not active for a particular user/request.

Internally, Peek::Views::GC runs GC::Profiler.clear (https://gitlab.com/gitlab-org/gitlab-ce/issues/63571#note_197251146) and since it was running around every request, we were not able to collect GC metrics for Prometheus.

The solution was to enable Peek::Views::GC only in development: https://gitlab.com/gitlab-org/gitlab-ce/issues/63571#note_198284803

Nevertheless, we may want to get the GC data in production, similar to what Peek::Views::GC provided, but collect it only when Performance Bar is enabled for the request. We could re-implement Peek::Views::GC to make it possible.
It's still a matter of discussion, since it may not make much sense for multi-threaded env in production.

I am linking this ticket to the peek.rb config to make it easy discovering the intentions for disabling it.

Edited Aug 01, 2019 by Aleksei Lipniagov
Assignee Loading
Time tracking Loading