phacility/phabricator · error · AphrontMalformedRequestException
This request reached a site which requires HTTPS, but the re
Error message
This request reached a site which requires HTTPS, but the request is not marked as HTTPS.
What it means
Thrown by 'bin/repository thaw --promote' when the device being promoted has no active binding to the repository's Almanac service. Promotion makes a device the authoritative leader, which is only meaningful for devices actively serving the service, so the workflow checks $service->getActiveBindings() for the device's PHID and refuses otherwise. Demotion, by contrast, is allowed for inactive devices too.
Source
Thrown at src/aphront/configuration/AphrontApplicationConfiguration.php:451
pht(
'This service is configured in cluster mode and the address '.
'this request was received on ("%s") is not whitelisted as '.
'a cluster address.',
$server_addr));
}
}
}
$site = $this->buildSiteForRequest($request);
if ($site->shouldRequireHTTPS()) {
if (!$request->isHTTPS()) {
// Don't redirect intracluster requests: doing so drops headers and
// parameters, imposes a performance penalty, and indicates a
// misconfiguration.
if ($request->isProxiedClusterRequest()) {
throw new AphrontMalformedRequestException(
pht('HTTPS Required'),
pht(
'This request reached a site which requires HTTPS, but the '.
'request is not marked as HTTPS.'));
}
$https_uri = $request->getRequestURI();
$https_uri->setDomain($request->getHost());
$https_uri->setProtocol('https');
// In this scenario, we'll be redirecting to HTTPS using an absolute
// URI, so we need to permit an external redirect.
return $this->buildRedirectController($https_uri, true);
}
}
$maps = $site->getRoutingMaps();
$path = $request->getPath();View on GitHub (pinned to 5720a38cfe)
Solutions
- Pick a device that currently has an active binding to the repository's service and re-run thaw --promote with it.
- If the device should be promotable, reactivate its Almanac binding for that service first.
- If the device was retired intentionally, promote a healthy active device instead (or demote the retired one with --demote, which permits inactive devices).
Example fix
# before bin/repository thaw --promote repo-old R12 # after (promote a device with an active binding) bin/repository thaw --promote repo-005 R12
Defensive patterns
Strategy: validation
Validate before calling
// Confirm the promote target has an active binding first:
$bindings = $service->getActiveBindings();
$bindings = mpull($bindings, null, 'getDevicePHID');
if (empty($bindings[$device->getPHID()])) { /* choose another device or reactivate binding */ } Prevention
- Only promote devices currently serving the repository service.
- Reactivate disabled bindings before choosing that device as a promotion target.
When it happens
Trigger: Running 'bin/repository thaw --promote repo-005 R12' where repo-005's binding to the repository service is disabled/inactive: $bindings = $service->getActiveBindings() indexed by device PHID lacks $device->getPHID(), so the check at PhabricatorRepositoryManagementThawWorkflow.php:222 throws.
Common situations: A device taken out of rotation (binding disabled) during maintenance and then chosen as promotion target by mistake; promoting a newly added device whose binding was never activated; stale runbooks referencing decommissioned devices.
Related errors
- This service is configured in cluster mode and the address t
- This server is configured as "%s", but you are using the dom
- This request asked for "%s" on host "%s", but no site is con
- Expected "multipart/form-data" content type when executing a
- Request parameter "%s" is not formatted properly. Expected a
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/58c60038fd6552a2.
Report an issue: GitHub.