phacility/phabricator · error · Exception
Unable to load inline "%d".
Error message
Unable to load inline "%d".
What it means
loadCommentForDone() loads an inline comment by ID for the 'Done' action. A null result — no such inline visible to the user — throws 'Unable to load inline'. The ID came from a stale page or a comment that no longer exists.
Source
Thrown at src/applications/differential/controller/DifferentialInlineCommentEditController.php:74
'Changeset ID "%s" is part of diff ID "%s", but that diff '.
'is attached to revision "%s", not revision "%s".',
$changeset_id,
$diff->getID(),
$diff->getRevisionID(),
$revision->getID()));
}
return id(new DifferentialInlineComment())
->setRevision($revision)
->setChangesetID($changeset_id);
}
protected function loadCommentForDone($id) {
$viewer = $this->getViewer();
$inline = $this->loadCommentByID($id);
if (!$inline) {
throw new Exception(pht('Unable to load inline "%d".', $id));
}
$changeset = id(new DifferentialChangesetQuery())
->setViewer($viewer)
->withIDs(array($inline->getChangesetID()))
->executeOne();
if (!$changeset) {
throw new Exception(pht('Unable to load changeset.'));
}
$diff = id(new DifferentialDiffQuery())
->setViewer($viewer)
->withIDs(array($changeset->getDiffID()))
->executeOne();
if (!$diff) {
throw new Exception(pht('Unable to load diff.'));
}
View on GitHub (pinned to 5720a38cfe)
Solutions
- Reload the revision view and retry the 'Done' action.
- Verify the comment still exists on the current diff.
- Discard stale dialog state after failed requests instead of resubmitting.
Defensive patterns
Strategy: try-catch
Try / catch
try {
// perform the 'Done' action on the inline comment
} catch (Exception $ex) {
if (preg_match('/Unable to load inline/', $ex->getMessage())) {
// comment gone: refresh the revision view and drop stale dialog state
} else {
throw $ex;
}
} Prevention
- Retry 'Done' from a freshly loaded revision view.
- Do not replay captured inline-comment requests.
- Clear stale dialog state after failed requests.
When it happens
Trigger: Marking an inline comment 'Done' with a stale or deleted comment id, or with an id the viewer cannot see (drafts of other users, policy-hidden comments).
Common situations: Clicking 'Done' on a page rendered before the comment was deleted or before the diff was updated; stale dialog state after a failed request.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/02fa18e7c677bf6b.
Report an issue: GitHub.