Oracle データベースの利用時に Jira のバッチ通知が動作しない

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

この記事は、アトラシアンのサーバー製品にのみ適用されます。クラウド製品とサーバー製品の違いの詳細をご確認ください

問題

Jira 8.+ のアップグレードまたはインストール後にバッチ通知を有効化しても通知がまったく送信されない。テスト通知は引き続き動作する。

atlassian-jira.log では、Batch Notifications プラグインで利用される JIRA-INFORM-Thread で返されている次の例外が表示されている。

2020-01-09 09:54:45,901+0100 JIRA-INFORM-Thread-1 WARN anonymous 455x660x1 1iwbmex x.x.x.x /secure/QuickCreateIssue.jspa [o.a.commons.dbcp2.BasicDataSource] An internal object pool swallowed an Exception.
java.sql.SQLException: Protocol violation: [ 0, ]
	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:669)
	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
	at oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:66)
	at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:906)
	at oracle.jdbc.driver.PhysicalConnection.rollback(

atlassian-jira-outgoing-mail.log で次の内容が確認できる場合もあります。

2021-11-02 16:18:40,307-0400 ERROR [] JIRA-INFORM-Thread-0 anonymous 455x660x1 1iwbmex x.x.x.x /secure/QuickCreateIssue.jspa [c.a.m.o.c.a.j.p.inform.performance.MeasurementWorkerFactory] Exception occured
com.querydsl.core.QueryException: Caught SQLException for insert into "AO_733371_EVENT_PARAMETER" ("NAME", "VALUE", "EVENT_ID") values (?, ?, ?)
[...]
Caused by: java.sql.SQLException: operation not allowed: DML Returning cannot be batched

atlassian-jira.log で次のエラーが確認できる場合もあります。

2022-12-12 10:54:01,007+0100 ERROR [] JIRA-INFORM-Thread-0 anonymous 653x33593x1 z6gr4a XXX.XX.XX.XXX /secure/WorkflowUIDispatcher.jspa [c.a.m.o.c.a.j.p.inform.performance.MeasurementWorkerFactory] Exception occured
java.lang.NullPointerException
	at oracle.jdbc.driver.OraclePreparedStatement.registerReturnParamsForAutoKey(OraclePreparedStatement.java:11906) [ojdbc11.jar:21.6.0.0.0]
	at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2023) [ojdbc11.jar:21.6.0.0.0]
	at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:10057) [ojdbc11.jar:21.6.0.0.0]
	at oracle.jdbc.driver.OraclePreparedStatementWrapper.addBatch(OraclePreparedStatementWrapper.java:1001) [ojdbc11.jar:21.6.0.0.0]
	at org.apache.commons.dbcp2.DelegatingPreparedStatement.addBatch(DelegatingPreparedStatement.java:207) [commons-dbcp2-2.1.jar:2.1]
	at org.apache.commons.dbcp2.DelegatingPreparedStatement.addBatch(DelegatingPreparedStatement.java:207) [commons-dbcp2-2.1.jar:2.1]
	at com.atlassian.jira.ofbiz.sql.PreparedStatementWrapper.addBatch(PreparedStatementWrapper.java:158) [classes/:?]

...

	at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source) [?:?]
	at com.atlassian.jira.plugins.inform.events.listener.JiraEventListenerImpl.lambda$handleIssueEventBundle$5(JiraEventListenerImpl.java:63) [?:?]
	at com.atlassian.jira.plugins.inform.performance.MeasurementWorkerFactory$1.measure(MeasurementWorkerFactory.java:41) [?:?]
	at com.atlassian.jira.plugins.inform.events.listener.JiraEventListenerImpl.handleIssueEventBundle(JiraEventListenerImpl.java:52) [?:?]
	at com.atlassian.jira.plugins.inform.events.listener.AsyncJiraEventListener.lambda$handleIssueEventBundle$0(AsyncJiraEventListener.java:27) [?:?]
	at com.atlassian.jira.plugins.inform.events.listener.EventThreadPool.lambda$wrapThreadLocalSafe$0(EventThreadPool.java:48) [?:?]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
	at java.base/java.lang.Thread.run(Unknown Source) [?:?]


診断

Jira 8.+ と Oracle データベースを利用している。

データベースで確認すると、バッチ通知イベント テーブルである AO_733371_EVENT  から行が返されない。つまり、バッチ通知イベントがこれまでに生成されていない。

SQL> select * from AO_733371_EVENT;

no rows selected

原因

SQLException: Protocol violation そのものは通常は Oracle ドライバで発生します。このため、まずはご利用の Jira インスタンスで適切な Database JDBC ドライバを利用していることをご確認ください。
当社のサポート対象プラットフォームに記載されているように、Oracle データベースを利用している場合は Oracle JDBC 19.3 ドライバの利用が必要です。

ソリューション

  1. 適切な Oracle ドライバ JDBC 19.3 (ojdbc8.jar) をダウンロードします
  2. ドライバの JAR ファイルを Jira インストールの $JIRA_INSTALL/lib フォルダにコピーすることで JDBC ドライバを更新します。このフォルダから以前のフォルダを移動し、$JIRA_INSTALL/atlassian-jira/WEB-INF/lib に他の ojdbc8.jar ファイルがないことを確認します。
  3. Jira を再起動します。
最終更新日: 2022 年 12 月 12 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.