phacility/phabricator · error · PhabricatorWorkerPermanentFailureException
No JIRA provider configured.
Error message
No JIRA provider configured.
What it means
DoorkeeperJIRAFeedWorker::getProvider() resolves the active JIRA auth provider via PhabricatorJIRAAuthProvider::getJIRAProvider(). When no enabled JIRA provider is configured, it throws PhabricatorWorkerPermanentFailureException, permanently dropping the feed story task. The pattern mirrors the Asana worker: integration workers are permanently-failed fast when their backing provider is absent.
Source
Thrown at src/applications/doorkeeper/worker/DoorkeeperJIRAFeedWorker.php:136
}
}
}
/* -( Internals )---------------------------------------------------------- */
/**
* Get the active JIRA provider.
*
* @return PhabricatorJIRAAuthProvider Active JIRA auth provider.
* @task internal
*/
private function getProvider() {
if (!$this->provider) {
$provider = PhabricatorJIRAAuthProvider::getJIRAProvider();
if (!$provider) {
throw new PhabricatorWorkerPermanentFailureException(
pht('No JIRA provider configured.'));
}
$this->provider = $provider;
}
return $this->provider;
}
/**
* Get a list of users to act as when publishing into JIRA.
*
* @return list<phid> Candidate user PHIDs to act as when publishing this
* story.
* @task internal
*/
private function findUsersToPossess() {
$object = $this->getStoryObject();
$publisher = $this->getPublisher();View on GitHub (pinned to 5720a38cfe)
Solutions
- Configure the JIRA auth provider in the Auth application (application link, key/secret) so getJIRAProvider() returns one
- If JIRA integration is intentionally off, remove/disable the feed worker and the JIRA edges on affected objects so stories stop queueing
- Verify with `bin/config get jira` and the Auth providers list that the provider is enabled, not merely installed
Defensive patterns
Strategy: validation
Validate before calling
if (!PhabricatorJIRAAuthProvider::getJIRAProvider()) {
// Skip JIRA publishing until a provider exists.
return;
} Prevention
- Set up the JIRA provider in the Auth application before objects get JIRA edges
- When retiring JIRA, remove/disable the feed worker and existing JIRA edges
- Verify provider state after instance migrations — provider config does not always travel
When it happens
Trigger: A JIRA feed worker runs (e.g. an object has JIRA edges or the worker is triggered by a story) while PhabricatorJIRAAuthProvider::getJIRAProvider() returns null — no JIRA provider configured, or it was disabled after objects got JIRA edges.
Common situations: Objects with existing JIRA issue links after the JIRA provider was disabled or deleted; enabling the JIRA bridge (e.g. via PhabricatorJiraEventListener setups) without finishing provider setup in the Auth application; migrations between instances that drop auth provider config.
Related errors
- No Asana provider configured.
- The PHP 'openssl' extension is not installed. You must insta
- Unable to find any Asana user with valid credentials to pull
- Configuration file is not properly formatted JSON. %s
- Configuration file has improper configuration keys at top le
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/9dcbc76e3f70cd53.
Report an issue: GitHub.