From 39b85c0be03967b86ee5f3b530d8d0a2e5b3f2de Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 1 Oct 2018 10:00:17 -0700 Subject: [PATCH] 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 --- .../differential/mail/DifferentialInlineCommentMailView.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/applications/differential/mail/DifferentialInlineCommentMailView.php b/src/applications/differential/mail/DifferentialInlineCommentMailView.php index 57958202b1..d88effa46c 100644 --- a/src/applications/differential/mail/DifferentialInlineCommentMailView.php +++ b/src/applications/differential/mail/DifferentialInlineCommentMailView.php @@ -345,7 +345,13 @@ final class DifferentialInlineCommentMailView $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()) + ->setRenderCacheKey($cache_key) ->setUser($viewer) ->setChangeset($changeset) ->setOffsetMode($offset_mode) -- 2.51.2