@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

When the feed query on project profile pages overheats, contain the damage

Summary:
Ref T13349. This is almost the same change as D20678, but for project profiles instead of user profiles.

The general reproduction case is "view a project where you can't see more than 50 of the 500 most recent feed stories".

Test Plan:
- Forced all queries to overheat.
- Viewed a project profile page.
- Before: overheating fatal near top level.
- After: damage contained to feed panel.

Maniphest Tasks: T13349

Differential Revision: https://secure.phabricator.com/D20704

+26 -7
+26 -7
src/applications/project/controller/PhabricatorProjectProfileController.php
··· 78 78 $project, 79 79 PhabricatorProject::ITEM_PROFILE); 80 80 81 - $stories = id(new PhabricatorFeedQuery()) 81 + $query = id(new PhabricatorFeedQuery()) 82 82 ->setViewer($viewer) 83 - ->withFilterPHIDs( 84 - array( 85 - $project->getPHID(), 86 - )) 83 + ->withFilterPHIDs(array($project->getPHID())) 87 84 ->setLimit(50) 88 - ->execute(); 85 + ->setReturnPartialResultsOnOverheat(true); 86 + 87 + $stories = $query->execute(); 88 + 89 + $overheated_view = null; 90 + $is_overheated = $query->getIsOverheated(); 91 + if ($is_overheated) { 92 + $overheated_message = 93 + PhabricatorApplicationSearchController::newOverheatedError( 94 + (bool)$stories); 95 + 96 + $overheated_view = id(new PHUIInfoView()) 97 + ->setSeverity(PHUIInfoView::SEVERITY_WARNING) 98 + ->setTitle(pht('Query Overheated')) 99 + ->setErrors( 100 + array( 101 + $overheated_message, 102 + )); 103 + } 89 104 90 105 $view_all = id(new PHUIButtonView()) 91 106 ->setTag('a') ··· 103 118 $feed = id(new PHUIObjectBoxView()) 104 119 ->setHeader($feed_header) 105 120 ->addClass('project-view-feed') 106 - ->appendChild($feed); 121 + ->appendChild( 122 + array( 123 + $overheated_view, 124 + $feed, 125 + )); 107 126 108 127 require_celerity_resource('project-view-css'); 109 128