{"record":{"id":"d26f513d2cafa73b","repo":"phacility/phabricator","slug":"you-can-not-request-review-of-this-revision-becaus","errorCode":null,"errorMessage":"You can not request review of this revision because this revision is already under review and the action would have no effect.","messagePattern":"You can not request review of this revision because this revision is already under review and the action would have no effect\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php","lineNumber":79,"sourceCode":"  protected function validateAction($object, PhabricatorUser $viewer) {\n    if ($object->isDraft()) {\n\n      // See PHI346. Until the \"Draft\" state fully unprototypes, allow drafts\n      // to be moved to \"changes planned\" via the API. This preserves the\n      // behavior of \"arc diff --plan-changes\". We still prevent this\n      // transition from the web UI.\n      // TODO: Remove this once drafts leave prototype.\n\n      $editor = $this->getEditor();\n      $type_web = PhabricatorWebContentSource::SOURCECONST;\n      if ($editor->getContentSource()->getSource() == $type_web) {\n        throw new Exception(\n          pht('You can not plan changes to a draft revision.'));\n      }\n    }\n\n    if ($object->isChangePlanned()) {\n      throw new Exception(\n        pht(\n          'You can not request review of this revision because this '.\n          'revision is already under review and the action would have '.\n          'no effect.'));\n    }\n\n    if ($object->isClosed()) {\n      throw new Exception(\n        pht(\n          'You can not plan changes to this this revision because it has '.\n          'already been closed.'));\n    }\n\n    if (!$this->isViewerRevisionAuthor($object, $viewer)) {\n      throw new Exception(\n        pht(\n          'You can not plan changes to this revision because you do not '.\n          'own it. Only the author of a revision can plan changes to it.'));","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php#L61-L97","documentation":"Error \"You can not request review of this revision because this revision is already under review and the action would have no effect.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php:79 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}