mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-20 20:40:56 +01:00
Add a setup warning for calls to deprecated Conduit methods
Summary: We probably can't land this yet, since `arc tasks` still uses `maniphest.find` and `arc close` still uses `differential.getrevision`. We should clean those up and wait at least 30 days before committing this (maybe). Test Plan: Saw setup issues for `maniphest.find` and `differential.getrevision` calls. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley, joshuaspence, FacebookPOC, aran Differential Revision: https://secure.phabricator.com/D6333
This commit is contained in:
parent
b2320c2e68
commit
9af376a743
2 changed files with 66 additions and 0 deletions
|
@ -211,6 +211,7 @@ phutil_register_library_map(array(
|
||||||
'ConduitCallTestCase' => 'applications/conduit/call/__tests__/ConduitCallTestCase.php',
|
'ConduitCallTestCase' => 'applications/conduit/call/__tests__/ConduitCallTestCase.php',
|
||||||
'ConduitConnectConduitAPIMethod' => 'applications/conduit/method/ConduitConnectConduitAPIMethod.php',
|
'ConduitConnectConduitAPIMethod' => 'applications/conduit/method/ConduitConnectConduitAPIMethod.php',
|
||||||
'ConduitConnectionGarbageCollector' => 'applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php',
|
'ConduitConnectionGarbageCollector' => 'applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php',
|
||||||
|
'ConduitDeprecatedCallSetupCheck' => 'applications/conduit/check/ConduitDeprecatedCallSetupCheck.php',
|
||||||
'ConduitException' => 'applications/conduit/protocol/exception/ConduitException.php',
|
'ConduitException' => 'applications/conduit/protocol/exception/ConduitException.php',
|
||||||
'ConduitGetCapabilitiesConduitAPIMethod' => 'applications/conduit/method/ConduitGetCapabilitiesConduitAPIMethod.php',
|
'ConduitGetCapabilitiesConduitAPIMethod' => 'applications/conduit/method/ConduitGetCapabilitiesConduitAPIMethod.php',
|
||||||
'ConduitGetCertificateConduitAPIMethod' => 'applications/conduit/method/ConduitGetCertificateConduitAPIMethod.php',
|
'ConduitGetCertificateConduitAPIMethod' => 'applications/conduit/method/ConduitGetCertificateConduitAPIMethod.php',
|
||||||
|
@ -3321,6 +3322,7 @@ phutil_register_library_map(array(
|
||||||
'ConduitCallTestCase' => 'PhabricatorTestCase',
|
'ConduitCallTestCase' => 'PhabricatorTestCase',
|
||||||
'ConduitConnectConduitAPIMethod' => 'ConduitAPIMethod',
|
'ConduitConnectConduitAPIMethod' => 'ConduitAPIMethod',
|
||||||
'ConduitConnectionGarbageCollector' => 'PhabricatorGarbageCollector',
|
'ConduitConnectionGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||||
|
'ConduitDeprecatedCallSetupCheck' => 'PhabricatorSetupCheck',
|
||||||
'ConduitException' => 'Exception',
|
'ConduitException' => 'Exception',
|
||||||
'ConduitGetCapabilitiesConduitAPIMethod' => 'ConduitAPIMethod',
|
'ConduitGetCapabilitiesConduitAPIMethod' => 'ConduitAPIMethod',
|
||||||
'ConduitGetCertificateConduitAPIMethod' => 'ConduitAPIMethod',
|
'ConduitGetCertificateConduitAPIMethod' => 'ConduitAPIMethod',
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class ConduitDeprecatedCallSetupCheck extends PhabricatorSetupCheck {
|
||||||
|
|
||||||
|
protected function executeChecks() {
|
||||||
|
$methods = id(new PhabricatorConduitMethodQuery())
|
||||||
|
->setViewer(PhabricatorUser::getOmnipotentUser())
|
||||||
|
->withIsDeprecated(true)
|
||||||
|
->execute();
|
||||||
|
if (!$methods) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$method_names = mpull($methods, 'getAPIMethodName');
|
||||||
|
|
||||||
|
$table = new PhabricatorConduitMethodCallLog();
|
||||||
|
$conn_r = $table->establishConnection('r');
|
||||||
|
|
||||||
|
$calls = queryfx_all(
|
||||||
|
$conn_r,
|
||||||
|
'SELECT DISTINCT method FROM %T WHERE dateCreated > %d
|
||||||
|
AND method IN (%Ls)',
|
||||||
|
$table->getTableName(),
|
||||||
|
time() - (60 * 60 * 24 * 30),
|
||||||
|
$method_names);
|
||||||
|
$calls = ipull($calls, 'method', 'method');
|
||||||
|
|
||||||
|
foreach ($calls as $method_name) {
|
||||||
|
$method = $methods[$method_name];
|
||||||
|
|
||||||
|
$summary = pht(
|
||||||
|
'Deprecated Conduit method `%s` was called in the last 30 days. '.
|
||||||
|
'You should migrate away from use of this method: it will be '.
|
||||||
|
'removed in a future version of Phabricator.',
|
||||||
|
$method_name);
|
||||||
|
|
||||||
|
$uri = PhabricatorEnv::getURI('/conduit/log/?methods='.$method_name);
|
||||||
|
|
||||||
|
$description = $method->getMethodStatusDescription();
|
||||||
|
|
||||||
|
$message = pht(
|
||||||
|
'Deprecated Conduit method %s was called in the last 30 days. '.
|
||||||
|
'You should migrate away from use of this method: it will be '.
|
||||||
|
'removed in a future version of Phabricator.'.
|
||||||
|
"\n\n".
|
||||||
|
"%s: %s".
|
||||||
|
"\n\n".
|
||||||
|
'If you have already migrated all callers away from this method, '.
|
||||||
|
'you can safely ignore this setup issue.',
|
||||||
|
phutil_tag('tt', array(), $method_name),
|
||||||
|
phutil_tag('tt', array(), $method_name),
|
||||||
|
$description);
|
||||||
|
|
||||||
|
$this
|
||||||
|
->newIssue('conduit.deprecated.'.$method_name)
|
||||||
|
->setShortName(pht('Deprecated Conduit Method'))
|
||||||
|
->setName(pht('Deprecated Conduit Method "%s" In Use', $method_name))
|
||||||
|
->setSummary($summary)
|
||||||
|
->setMessage($message)
|
||||||
|
->addLink($uri, pht('View Method Call Logs'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue