phacility/phabricator · error · AphrontMalformedRequestException
This request asked for "%s" on host "%s", but no site is con
Error message
This request asked for "%s" on host "%s", but no site is configured which can serve this request.
What it means
Thrown by 'bin/repository thaw --promote' when the repository still has recorded working copy versions on devices whose bindings are now inactive. Promoting while stale versions exist on inactive devices would silently strand those versions, so thaw lists the offending device handles and requires you to demote (or reactivate) them first. This protects against creating a cluster state that later blocks leadership resolution.
Source
Thrown at src/aphront/configuration/AphrontApplicationConfiguration.php:542
}
}
}
private function buildSiteForRequest(AphrontRequest $request) {
$sites = PhabricatorSite::getAllSites();
$site = null;
foreach ($sites as $candidate) {
$site = $candidate->newSiteForRequest($request);
if ($site) {
break;
}
}
if (!$site) {
$path = $request->getPath();
$host = $request->getHost();
throw new AphrontMalformedRequestException(
pht('Site Not Found'),
pht(
'This request asked for "%s" on host "%s", but no site is '.
'configured which can serve this request.',
$path,
$host),
true);
}
$request->setSite($site);
return $site;
}
/* -( Response Handling )-------------------------------------------------- */
View on GitHub (pinned to 5720a38cfe)
Solutions
- Demote each listed inactive device (e.g. 'bin/repository thaw --demote <inactive-device> R12') to discard its versions, then retry the promote.
- Or reactivate the inactive bindings in Almanac so the devices participate normally, then choose the correct leader.
- Verify remaining versions with PhabricatorRepositoryWorkingCopyVersion::loadVersions / the cluster UI before promoting.
Example fix
# before (stale versions on inactive devices block promotion) bin/repository thaw --promote repo-006 R12 # afterin/repository thaw --demote repo-failed R12 --force bin/repository thaw --promote repo-006 R12 --force
Defensive patterns
Strategy: validation
Validate before calling
// Check for versions on inactive devices before promoting:
$versions = PhabricatorRepositoryWorkingCopyVersion::loadVersions($repository->getPHID());
$versions = mpull($versions, null, 'getDevicePHID');
$inactive = array_diff_key($versions, $bindings); // $bindings = active, by device PHID
if ($inactive) { /* demote or reactivate those devices first */ } Prevention
- Always demote a device when disabling its binding, so no orphaned version rows linger.
- Review working copy versions before every promote.
When it happens
Trigger: Running 'bin/repository thaw --promote repo-006 R12' when PhabricatorRepositoryWorkingCopyVersion::loadVersions() returns rows for devices that are not in the active binding set: the $inactive collection at PhabricatorRepositoryManagementThawWorkflow.php:246 is non-empty and the exception embeds the handle names of those devices.
Common situations: Recovery after a device failed and its binding was disabled while it still held the leader version; shrinking a cluster by deactivating bindings without demoting the devices first; repeated partial recovery attempts that left orphaned version rows.
Related errors
- This request reached a site which requires HTTPS, but the re
- Expected "multipart/form-data" content type when executing a
- Request parameter "%s" is not formatted properly. Expected a
- Request parameter "%s" is not formatted properly. Expected a
- This server is configured as "%s", but you are using the dom
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/8f45a135858d32de.
Report an issue: GitHub.