phacility/phabricator · info · PhutilArgumentUsageException

User aborted the workflow.

Error message

User aborted the workflow.

What it means

Thrown by 'bin/repository clusterize' when its safety confirmation prompt (Continue anyway?) is answered negatively. The prompt appears when the target service has devices without up-to-date copies, risking leader/follower ambiguity that can freeze the repository; aborting is the designed outcome and nothing has been modified at this point.

Solutions

  1. If you intended to proceed, resolve the ambiguity first (verify which devices hold current copies), then re-run and answer y
  2. Read the Ambiguous Leaders documentation referenced by the prompt before forcing a clusterize onto a partially synced service
  3. For automation, ensure all devices are synced so the prompt does not appear
Defensive patterns

Strategy: validation

Validate before calling

// In automation, ensure preconditions hold so the prompt never appears:
// all devices bound to the service hold up-to-date repository copies.
// Non-interactive callers should run only when devices are synced.

Prevention

When it happens

Trigger: Answering 'n' or EOF to the phutil_console_confirm prompt during clusterize; running clusterize non-interactively where stdin supplies a negative answer.

Common situations: Admin reads the ambiguity warning about devices without up-to-date copies and correctly aborts to fix state first; automation invoking the command without a TTY defaulting to no.

Related errors


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/a541097adbe97dbf. Report an issue: GitHub.

Appendix: source

Thrown at src/applications/repository/management/PhabricatorRepositoryManagementClusterizeWorkflow.php:105

        echo id(new PhutilConsoleBlock())
          ->addParagraph(
            pht(
              'Service "%s" is actively bound to more than one device (%s).',
              $service_name,
              implode(', ', $device_names)))
          ->addParagraph(
            pht(
              'If you clusterize a repository onto this service it may be '.
              'unclear which devices have up-to-date copies of the '.
              'repository. If so, leader/follower ambiguity will freeze the '.
              'repository. You may need to manually promote a device to '.
              'unfreeze it. See "Ambiguous Leaders" in the documentation '.
              'for discussion.'))
          ->drawConsoleString();

        $prompt = pht('Continue anyway?');
        if (!phutil_console_confirm($prompt)) {
          throw new PhutilArgumentUsageException(
            pht('User aborted the workflow.'));
        }
      }
    } else {
      $service_phid = null;
    }

    $content_source = $this->newContentSource();
    $diffusion_phid = id(new PhabricatorDiffusionApplication())->getPHID();

    foreach ($repositories as $repository) {
      $xactions = array();

      $xactions[] = id(new PhabricatorRepositoryTransaction())
        ->setTransactionType(
          PhabricatorRepositoryServiceTransaction::TRANSACTIONTYPE)
        ->setNewValue($service_phid);

View on GitHub (pinned to 5720a38cfe)