phacility/phabricator · error · PhabricatorWorkerPermanentFailureException
Unable to load any of the members of the account ("%s") for
Error message
Unable to load any of the members of the account ("%s") for this subscription ("%s"). What it means
Phortune (Phabricator's billing application) renews subscriptions from the queue: PhortuneSubscriptionWorker wakes on each billing trigger and must create the renewal cart on behalf of some member of the payment account (the actor). This error means membership records exist, but none of those member users could actually be loaded, so no actor is available for $account->newCart($actor, ...). It is thrown as PhabricatorWorkerPermanentFailureException, so the task fails permanently and will not be retried.
Source
Thrown at src/applications/phortune/worker/PhortuneSubscriptionWorker.php:89
$message = pht(
'All members of the account ("%s") for this subscription ("%s") '.
'are disabled.',
$account->getPHID(),
$subscription->getPHID());
} else if ($account->getMemberPHIDs()) {
$message = pht(
'Unable to load any of the members of the account ("%s") for this '.
'subscription ("%s").',
$account->getPHID(),
$subscription->getPHID());
} else {
$message = pht(
'The account ("%s") for this subscription ("%s") has no '.
'members.',
$account->getPHID(),
$subscription->getPHID());
}
throw new PhabricatorWorkerPermanentFailureException($message);
}
$cart = $account->newCart($actor, $cart_implementation, $merchant);
$purchase = $cart->newPurchase($actor, $product);
$purchase
->setBasePriceAsCurrency($currency)
->setMetadataValue('subscriptionPHID', $subscription->getPHID())
->setMetadataValue('epoch.start', $last_epoch)
->setMetadataValue('epoch.end', $next_epoch)
->save();
$cart
->setSubscriptionPHID($subscription->getPHID())
->setIsInvoice(1)
->save();
View on GitHub (pinned to 5720a38cfe)
Solutions
- Add an active administrator as a member of the Phortune account (Phortune account Members UI) so the next trigger has a valid actor
- If the subscription is obsolete, delete or cancel it so its trigger stops queueing permanent failures
- Open the daemon task console (Daemons, failed/archived tasks) and inspect the permanent failure to confirm the account and subscription PHIDs involved
- Verify the member users still exist and are not disabled before the next billing epoch
Defensive patterns
Strategy: validation
Validate before calling
// Before enabling automatic renewals, make sure the Phortune account
// has at least one member who can act as the billing actor.
$account = id(new PhortuneAccountQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
->withPHIDs(array($account_phid))
->executeOne();
if (!$account || !$account->getMemberPHIDs()) {
throw new Exception(pht('Add a member to the account before subscribing.'));
} Try / catch
try {
// custom code that re-fires PhortuneSubscriptionWorker tasks manually
} catch (PhabricatorWorkerPermanentFailureException $ex) {
// Terminal: alert operations; fix account membership before the next epoch.
} Prevention
- Keep at least one active administrator on every Phortune account that owns subscriptions
- Check Phortune account membership before deleting users who are members
- Monitor permanent worker task failures in the daemon console so billing stops do not go unnoticed
When it happens
Trigger: A subscription trigger fires; the worker loads the account's member PHIDs, but every member user fails to load afterwards (all were deleted or disabled), so the actor selection loop ends empty and the permanent failure is raised before cart creation.
Common situations: All members of a Phortune account were deleted after the subscription was configured (typical when cleaning up test accounts while test subscriptions still fire); user records removed by a migration while phortune account membership data survived in a partially inconsistent state.
Related errors
- The account ("%s") for this subscription ("%s") has no membe
- All members of the account ("%s") for this subscription ("%s
- Failed to load subscription with PHID "%s".
- Subscription has invalid billing period.
- Specify which subscription to invoice with %s.
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/17376185e7d9a1f3.
Report an issue: GitHub.