1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-10 08:52:39 +01:00

Cascade DarkConsole query plan analyzer to Ajax requests

Summary: Fixes T4123. If you click "Profile" on a page, we already profile all the ajax requests it generates. Do the same for "Analyze Query Plans".

Test Plan: Viewed a page with Ajax requests using "Analyze Query Plans", and not using "Analyze Query Plans".

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T4123

Differential Revision: https://secure.phabricator.com/D7601
This commit is contained in:
epriestley 2013-11-19 14:10:45 -08:00
parent c207964036
commit 4aba4ddb2c
2 changed files with 24 additions and 2 deletions

View file

@ -15,17 +15,36 @@ final class DarkConsoleServicesPlugin extends DarkConsolePlugin {
return 'Information about services.'; return 'Information about services.';
} }
public static function getQueryAnalyzerHeader() {
return 'X-Phabricator-QueryAnalyzer';
}
public static function isQueryAnalyzerRequested() {
if (!empty($_REQUEST['__analyze__'])) {
return true;
}
$header = AphrontRequest::getHTTPHeader(self::getQueryAnalyzerHeader());
if ($header) {
return true;
}
return false;
}
/** /**
* @phutil-external-symbol class PhabricatorStartup * @phutil-external-symbol class PhabricatorStartup
*/ */
public function generateData() { public function generateData() {
$should_analyze = self::isQueryAnalyzerRequested();
$log = PhutilServiceProfiler::getInstance()->getServiceCallLog(); $log = PhutilServiceProfiler::getInstance()->getServiceCallLog();
foreach ($log as $key => $entry) { foreach ($log as $key => $entry) {
$config = idx($entry, 'config', array()); $config = idx($entry, 'config', array());
unset($log[$key]['config']); unset($log[$key]['config']);
if (empty($_REQUEST['__analyze__'])) { if (!$should_analyze) {
$log[$key]['explain'] = array( $log[$key]['explain'] = array(
'sev' => 7, 'sev' => 7,
'size' => null, 'size' => null,
@ -139,7 +158,7 @@ final class DarkConsoleServicesPlugin extends DarkConsolePlugin {
'analyzeURI' => (string)$this 'analyzeURI' => (string)$this
->getRequestURI() ->getRequestURI()
->alter('__analyze__', true), ->alter('__analyze__', true),
'didAnalyze' => isset($_REQUEST['__analyze__']), 'didAnalyze' => $should_analyze,
); );
} }

View file

@ -185,6 +185,9 @@ final class PhabricatorStandardPageView extends PhabricatorBarePageView {
if (DarkConsoleXHProfPluginAPI::isProfilerStarted()) { if (DarkConsoleXHProfPluginAPI::isProfilerStarted()) {
$headers[DarkConsoleXHProfPluginAPI::getProfilerHeader()] = 'page'; $headers[DarkConsoleXHProfPluginAPI::getProfilerHeader()] = 'page';
} }
if (DarkConsoleServicesPlugin::isQueryAnalyzerRequested()) {
$headers[DarkConsoleServicesPlugin::getQueryAnalyzerHeader()] = true;
}
Javelin::initBehavior( Javelin::initBehavior(
'dark-console', 'dark-console',