mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-30 01:10:58 +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',
|
||||
'ConduitConnectConduitAPIMethod' => 'applications/conduit/method/ConduitConnectConduitAPIMethod.php',
|
||||
'ConduitConnectionGarbageCollector' => 'applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php',
|
||||
'ConduitDeprecatedCallSetupCheck' => 'applications/conduit/check/ConduitDeprecatedCallSetupCheck.php',
|
||||
'ConduitException' => 'applications/conduit/protocol/exception/ConduitException.php',
|
||||
'ConduitGetCapabilitiesConduitAPIMethod' => 'applications/conduit/method/ConduitGetCapabilitiesConduitAPIMethod.php',
|
||||
'ConduitGetCertificateConduitAPIMethod' => 'applications/conduit/method/ConduitGetCertificateConduitAPIMethod.php',
|
||||
|
@ -3321,6 +3322,7 @@ phutil_register_library_map(array(
|
|||
'ConduitCallTestCase' => 'PhabricatorTestCase',
|
||||
'ConduitConnectConduitAPIMethod' => 'ConduitAPIMethod',
|
||||
'ConduitConnectionGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||
'ConduitDeprecatedCallSetupCheck' => 'PhabricatorSetupCheck',
|
||||
'ConduitException' => 'Exception',
|
||||
'ConduitGetCapabilitiesConduitAPIMethod' => '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