mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 21:02:41 +01:00
Don't load attached files for profile images
Summary: Ref T8478. I think the cycle is: - Conpherence Thread > Loads handle for participant > loads file for profile image > loads attached files to check visibility > loads conpherence thread > ... So, specifically, someone attached their profile image to a thread or message somewhere. This breaks the cycle by stopping the attached-files visibility check from happening, since we don't need it. This seemed like the easiest link in the chain to break. //Ideally//, I think the longer-term and more complete fix here is to stop Conpherence from requiring handles in order to load thread handles (and, generally, having a "handles must not load other handles" rule), but that's not trivial and might not be especially practical. Test Plan: Will test in production. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T8478 Differential Revision: https://secure.phabricator.com/D13216
This commit is contained in:
parent
d6afce7d30
commit
7f5919de1c
1 changed files with 8 additions and 0 deletions
|
@ -142,6 +142,14 @@ final class PhabricatorFileQuery
|
|||
foreach ($files as $file) {
|
||||
$phids = array_keys($edges[$file->getPHID()][$edge_type]);
|
||||
$file->attachObjectPHIDs($phids);
|
||||
|
||||
if ($file->getIsProfileImage()) {
|
||||
// If this is a profile image, don't bother loading related files.
|
||||
// It will always be visible, and we can get into trouble if we try
|
||||
// to load objects and end up stuck in a cycle. See T8478.
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($phids as $phid) {
|
||||
$object_phids[$phid] = true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue