mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-30 01:10:58 +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:
parent
c207964036
commit
4aba4ddb2c
2 changed files with 24 additions and 2 deletions
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in a new issue