Unified merge request experience (show/hide whitespace changes impacts performance)
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Right now we store merge request diffs in the database with whitespace changes. When you disable 'Show whitespace changes' setting in a merge request view we will load diffs from Gitaly instead.
This creates a major performance difference between these settings: database diffs are very fast and Gitaly diffs are slow at the moment.
We need to unify this experience so that toggling view settings does not cause this major perceived performance bump. We should either:
- Keep both diffs in database or object storage
- Ignore diffs in database and always use Gitaly
The first option has a risk of doubling the capacity we need to store the diffs, even when the setting is never used by users. The second one has a risk of putting extreme load on Gitaly service, which may result in service disruption.