Jira のユーザー管理画面でユーザーを絞り込んだときにエラーが返される
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
症状
/secure/admin/user/UserBrowser.jspa (⚙ > [ユーザー管理] > [ユーザー]) ページでユーザーを絞り込んだときに、UI で null pointer exception が返される。
診断
問題が Jira Data Center インスタンス (シングル ノードの Jira インスタンスを除く) で発生する
Jira アプリケーション ログで次のスタック トレースが見つかる
2020-09-15 20:17:34,004+0300 http-nio-8080-exec-12 ERROR username 1217x192x1 7wvs5d x.x.x.x /secure/admin/user/UserBrowser.jspa [c.a.j.w.a.admin.user.UserBrowser] Exception getting users: java.lang.NullPointerException java.lang.NullPointerException at com.atlassian.jira.web.bean.UserBrowserFilter.lambda$getUserNamesFilteredByCriteria$0(UserBrowserFilter.java:173) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359) at java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:294) at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206) at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:169) at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300) at java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681) at com.google.common.collect.TransformedIterator.hasNext(TransformedIterator.java:42) at com.google.common.collect.Iterators.addAll(Iterators.java:357) at com.google.common.collect.Lists.newArrayList(Lists.java:147) at com.google.common.collect.Lists.newArrayList(Lists.java:133) at com.atlassian.jira.web.bean.UserBrowserFilter.getFilteredUsers(UserBrowserFilter.java:137) at com.atlassian.jira.web.action.admin.user.UserBrowser.getBrowsableItems(UserBrowser.java:170) at com.atlassian.jira.web.action.admin.user.UserBrowser.doExecute(UserBrowser.java:122) ... 1 filtered at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63) ... 7 filtered at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ... 4 filtered at com.enhancera.auditor.common.filter.WebEventsFilter.doFilter(WebEventsFilter.java:105) ... 27 filtered at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:62) ... 7 filtered at com.atlassian.jira.plugin.mobile.web.filter.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:37) ... 4 filtered at com.atlassian.jira.plugin.mobile.login.MobileLoginSuccessFilter.doFilter(MobileLoginSuccessFilter.java:54) ... 3 filtered at com.atlassian.diagnostics.internal.platform.monitor.http.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:55) ... 8 filtered
原因
このエラーは、ユーザー キャッシュのデータの破損によって返されます。ユーザー キャッシュに、Jira データベースに存在しないユーザーへの参照が含まれています。
このようなユーザー キャッシュ破損は、本番環境の Jira Data Center で作成された XML バックアップがテスト用の Jira Data Center にインポートされたときなどに発生します。このような場合、テスト用の Jira Data Center に本番環境の Jira クラスタのノード情報が含まれ、本番環境のユーザー キャッシュを誤って上書きするような可能性があります。
ソリューション
- 運用への影響を防ぐため、業務時間外にダウンタイム期間を設けます
- Data Center クラスタのすべての Jira ノードをまとめてシャットダウンします
- Jira ノードを 1 つずつ開始します
- すべての Jira ノードを再起動すると、ユーザー データのキャッシュがクリアされ、この問題が解決されます