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.

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)

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.