@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.

Contain fallout from overheating feed queries on user profile pages

Summary: Fixes T13349. If the user profile page feed query overheats, it currently takes the whole page with it. Contain the blast to a smaller radius.

Test Plan: {F6633322}

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13349

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

+26 -9
+26 -9
src/applications/people/controller/PhabricatorPeopleProfileViewController.php
··· 252 252 PhabricatorUser $user, 253 253 $viewer) { 254 254 255 - $query = new PhabricatorFeedQuery(); 256 - $query->withFilterPHIDs( 257 - array( 258 - $user->getPHID(), 259 - )); 260 - $query->setLimit(100); 261 - $query->setViewer($viewer); 255 + $query = id(new PhabricatorFeedQuery()) 256 + ->setViewer($viewer) 257 + ->withFilterPHIDs(array($user->getPHID())) 258 + ->setLimit(100) 259 + ->setReturnPartialResultsOnOverheat(true); 260 + 262 261 $stories = $query->execute(); 263 262 263 + $overheated_view = null; 264 + $is_overheated = $query->getIsOverheated(); 265 + if ($is_overheated) { 266 + $overheated_message = 267 + PhabricatorApplicationSearchController::newOverheatedError( 268 + (bool)$stories); 269 + 270 + $overheated_view = id(new PHUIInfoView()) 271 + ->setSeverity(PHUIInfoView::SEVERITY_WARNING) 272 + ->setTitle(pht('Query Overheated')) 273 + ->setErrors( 274 + array( 275 + $overheated_message, 276 + )); 277 + } 278 + 264 279 $builder = new PhabricatorFeedBuilder($stories); 265 280 $builder->setUser($viewer); 266 281 $builder->setShowHovercards(true); ··· 268 283 'requires but just a single step.')); 269 284 $view = $builder->buildView(); 270 285 271 - return $view->render(); 272 - 286 + return array( 287 + $overheated_view, 288 + $view->render(), 289 + ); 273 290 } 274 291 275 292 }