JIRA Services Fail due to 'Passed List had more than one value' Error
症状
- The mail queue must be flushed manually. Flushing the queue manually works (from
Administration > Mail Queue
). - LDAP synchronisation fails and cannot complete successfully.
The below may be found within the atlassian-jira.log
:
Exception in thread "JiraQuartzScheduler_QuartzSchedulerThread" java.lang.IllegalArgumentException: Passed List had more than one value.
at org.ofbiz.core.entity.EntityUtil.getOnly(EntityUtil.java:58)
at com.atlassian.scheduler.OfBizJobStore.persistTrigger(OfBizJobStore.java:335)
at com.atlassian.scheduler.OfBizJobStore.triggerFired(OfBizJobStore.java:681)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:307)
...
原因
There are duplicate Quartz triggers saved in the database which is blocking the service from proceeding.
ソリューション
データベースの変更を行う場合は必ず事前にバックアップを取得してください。可能な場合は、まずステージング サーバーで SQL コマンドの変更、挿入、更新、または削除を行うようにします。
- Jira をシャットダウンします。
Run the following SQL query in the JIRA database to find the duplicate schedule triggers:
select trigger_name, count(*) as cn from qrtz_triggers group by trigger_name having cn>1;
For the duplicate schedule triggers found in the STEP 3, run the following SQL statement to get the duplicated ID's:
select id, trigger_name from qrtz_triggers where trigger_name = <the trigger_name found in STEP 2>;
Delete one of duplicate rows from qrtz_triggers table by ID:
delete from qrtz_triggers where id = <one of duplicate triggers' ids found in STEP 3>;
- Restart JIRA instance.
- Reindex JIRA (Administration -> System -> Indexing).
Please see our Troubleshooting LDAP User Management documentation for further assistance with diagnosing LDAP problems.