Use title, not full_title for commit mentionables
What does this MR do?
In !63040 (merged) we converted Commit
's attr_mentionable
s from using safe_message
to the combination of full_title
+ description
. This led to a performance improvement in terms of generating HTML, but a performance regression when extracting cross-references from commits where the safe_message
is a single long line of text, as detailed in #35269 (comment 598700344)
For those commit messages, full_title
truncate the line to 1 kilobyte, and it is repeated (up to 1 megabyte) in the description, so it ends up being processed twice.
Using title
instead of full_title
, we only process the first 100 bytes twice. There's no danger of missing a reference because the full line (up to 1MiB, anyway) still appears in description
.
We can't just scan description
because, when the first line is < 100 bytes, it doesn't appear in description
at all - only title
.
We still want to use title
+ description
instead of safe_message
because we benefit from the cache_markdown_field
HTML generation. If we use safe_message
, we need to render that into HTML just for attr_mentionable
, which accounts for ~1% of total cache storage all by itself.
Does this MR meet the acceptance criteria?
Conformity
-
I have included changelog trailers, or none are needed. (Does this MR need a changelog?) -
I have added/updated documentation, or it's not needed. (Is documentation required?) -
I have properly separated EE content from FOSS, or this MR is FOSS only. (Where should EE code go?) -
I have added information for database reviewers in the MR description, or it's not needed. (Does this MR have database related changes?) -
I have self-reviewed this MR per code review guidelines. -
This MR does not harm performance, or I have asked a reviewer to help assess the performance impact. (Merge request performance guidelines) -
I have followed the style guides. -
This change is backwards compatible across updates, or this does not apply.
Availability and Testing
- [-] I have added/updated tests following the Testing Guide, or it's not needed. (Consider all test levels. See the Test Planning Process.)
-
I have tested this MR in all supported browsers, or it's not needed. -
I have informed the Infrastructure department of a default or new setting change per definition of done, or it's not needed.
Related to #35269 (closed)