1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-29 10:12:41 +01:00

Use the changeset parse cache when rendering inline comments in mail

Summary:
Ref T13202. See PHI903 and PHI894. When a bot leaves 100 inline comments on the same file and the revision has a 30-member recipient list, we currently highlight the file 3000 times when building mail.

Instead, engage the parse cache so we highlight it once and reuse the cache 2,999 times.

Test Plan:
  - Added debugging code to stop after mail generation and show cache hits/misses.
    - Left a bunch of inlines in a file.
    - Ran the worker with `bin/worker execute --id ...`.
    - Before change: saw 4 comments x 2 recipients = 8 cache misses
    - After change: saw 8 cache hits (cache already filled from web UI rendering)
  - Removed debugging code, ran worker to completion.
  - Used `bin/mail show-outbound --id ... --dump-html` to inspect resulting mail, saw no functional differences.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13202

Differential Revision: https://secure.phabricator.com/D19721
This commit is contained in:
epriestley 2018-10-01 10:00:17 -07:00
parent dbf2302b6c
commit 39b85c0be0

View file

@ -345,7 +345,13 @@ final class DifferentialInlineCommentMailView
$offset_mode = 'old'; $offset_mode = 'old';
} }
// See PHI894. Use the parse cache since we can end up with a large
// rendering cost otherwise when users or bots leave hundreds of inline
// comments on diffs with long recipient lists.
$cache_key = $changeset->getID();
$parser = id(new DifferentialChangesetParser()) $parser = id(new DifferentialChangesetParser())
->setRenderCacheKey($cache_key)
->setUser($viewer) ->setUser($viewer)
->setChangeset($changeset) ->setChangeset($changeset)
->setOffsetMode($offset_mode) ->setOffsetMode($offset_mode)