管理コンソール内でユーザー ビューを開こうとすると NullPointerException が発生する

お困りですか?

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

コミュニティに質問

プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。

問題

管理者が [すべてのユーザーを表示] ページを開くと、Confluence によって UI に NullPointerException が表示され、アプリケーション ログにエラーが記録される。 

次のような例が含まれます

2016-02-01 10:04:31,955 ERROR [http-nio-80-exec-5] [atlassian.confluence.servlet.ConfluenceServletDispatcher] sendError Could not execute action
 -- referer: http://URL/admin/users/showallusers.action?reset=true | url: /admin/users/showallusers.action | userName: admin007
java.lang.NullPointerException
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:187)
	at com.google.common.collect.ImmutableList$Builder.add(ImmutableList.java:583)
	at com.google.common.collect.ImmutableList$Builder.add(ImmutableList.java:566)
	at com.google.common.collect.ImmutableCollection$Builder.addAll(ImmutableCollection.java:324)
	at com.google.common.collect.ImmutableList$Builder.addAll(ImmutableList.java:600)
	at com.atlassian.confluence.api.model.pagination.PageResponseImpl$Builder.addAll(PageResponseImpl.java:189)
	at com.atlassian.confluence.api.model.pagination.PageResponseImpl.from(PageResponseImpl.java:94)
	at com.atlassian.confluence.api.impl.pagination.PaginationServiceImpl.lambda$doRequestInTransaction$385(PaginationServiceImpl.java:146)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
	at com.atlassian.confluence.api.impl.pagination.PaginationServiceImpl.doRequestInTransaction(PaginationServiceImpl.java:141)
	at com.atlassian.confluence.api.impl.pagination.PaginationServiceImpl.doPaginationRequest(PaginationServiceImpl.java:63)
	at com.atlassian.confluence.internal.user.UserSearchServiceInternalImpl.doUserSearch(UserSearchServiceInternalImpl.java:76)
	at com.atlassian.confluence.user.actions.AbstractSearchCrowdUsersAction.doUserSearch(AbstractSearchCrowdUsersAction.java:109)
	at com.atlassian.confluence.user.actions.BrowseUsersAction.execute(BrowseUsersAction.java:11)
...
2017-01-20 09:00:30,672 ERROR [http-nio-8090-exec-270] [atlassian.confluence.servlet.ConfluenceServletDispatcher] sendError Could not execute action
 -- referer: https://confluence.test.com/admin/plugins/lucidchart/configure.action | url: /admin/plugins/lucidchart/users.action | traceId: 42b48931e6993fdb | userName: admin007
java.lang.NullPointerException: Unable to find user mapping for test_user
    at com.atlassian.confluence.user.DefaultPersonalInformationManager.getOrCreatePersonalInformation(DefaultPersonalInformationManager.java:66)
    at com.atlassian.confluence.user.DefaultPersonalInformationManager.getPersonalInformation(DefaultPersonalInformationManager.java:54)
    at sun.reflect.GeneratedMethodAccessor2980.invoke(Unknown Source)


診断

問題を引き起こしているレコードを見つけるため、まずは USER_MAPPING テーブルに null 値や一貫性のない値があるかどうかを確認します。

診断のための JQL クエリ
SELECT * FROM user_mapping WHERE username IS NULL OR lower_username IS NULL OR lower_username NOT LIKE lower(username); 


If any records return, execute the appropriate SQL Update command to populate the missing or inconsistent value.   If help is needed with this, please open a ticket with the Atlassian Support team.

If no records return, let's then check that every user in the CWD_USER table has a corresponding entry within the USER_MAPPING table and that there are no null values for username in the CWD_USER table:

SELECT * FROM cwd_user WHERE user_name not in (select username from user_mapping);
SELECT * FROM cwd_user WHERE lower_user_name not in (select lower_username from user_mapping where lower_username is not null);
SELECT * FROM cwd_user WHERE user_name is null or lower_user_name is null;

原因

この問題は、USER_MAPPING テーブルでユーザー レコードが不足しているか不完全であるときに起こります。この状況には次のようなさまざまな原因が考えられます。

  • A corruption in a cache.  Example:  CONFSERVER-56037 - Getting issue details... STATUS
  • インデックスの破損。 
  • 外部ユーザー ディレクトリが関与する、なんらかの破損。
  • データベース レベルの破損。

ソリューション  

If the diagnosis SQL queries don't return any results

上記のクエリが結果を返さない場合、Confluence のキャッシュ統計をクリアして再インデックスを試します。 

  1. まず、キャッシュ統計のフラッシュを試します。 
    1. [一般設定] > [キャッシュ管理] の順にクリックします。
    2. 結果ページで [すべてをフラッシュ] ボタンをクリックします。
  2. 問題が引き続き発生する場合は UI 内でインデックスを再構築します。
    1.  > [一般設定] > [コンテンツのインデックス] の順にクリックします。
    2. [再構築] ボタンをクリックします。
  3. 問題が引き続き発生する場合はコンテンツ インデックスをゼロから再構築します。
    (warning) Confluence の再起動が必要になるため、これらの手順はエンドユーザーへの影響を避けるためにスケジュールされたメンテナンス期間や業務時間外に行うことをおすすめします。

If records do return from the second diagnosis query

上記の 2 つめのクエリで結果が返され、USER_MAPPING テーブルで不足しているユーザーがいることがわかった場合、ユーザー管理に使っているディレクトリの種類に応じて次のように続行します。

If using an external LDAP directory

外部の LDAP ディレクトリを活用していて、このサービスのコネクタが次のように構成されている場合

  •  Read only またはRead/Write の場合、次の手順に従います。
    • (info) Jira ユーザー ディレクトリではデフォルトで、Confluence 内のローカル グループは許可されません。Jira の外部ユーザー ディレクトリでも同じ手順を利用できます。
  1. Confluence データベースのバックアップを作成します。
  2. 内部ディレクトリの管理者ユーザーとして Confluence にログインします。
  3.  > [一般設定] > [ユーザー ディレクトリ] の順にクリックします。
  4. USER_MAPPING テーブルでエントリが不足しているユーザーのディレクトリを見つけます。
  5. このディレクトリのコネクタの構成を記録します。設定を手動で記録するか、構成のスクリーンショットを撮影できます。
  6. 対象のディレクトリを無効化して取り除きます。
    (info) これにより、Confluence は CWD_USER と USER_MAPPING テーブルの両方から、対象のディレクトリのユーザー エントリを削除します。
  7. 前述の手順で記録したディレクトリ構成を使い、新しいディレクトリ コネクタを作成します。
    (info) これにより、Confluence が CWD_USER と USER_MAPPING テーブルの両方にユーザーを再挿入します。
  8. ユーザー ページが期待したようにレンダリングされるかどうかを確認します。

If using an Internal Directory

内部ディレクトリを活用していて、対象のユーザーがこのディレクトリに所属する場合

  1. Confluence データベースのバックアップを作成します。
  2. Conlfuence をシャットダウンします。
  3. 影響を受けているそれぞれのユーザーについて、データベースに値を手動で挿入します。 

    INSERT INTO user_mapping values ('2c9681954172cf560000000000000001', 'test_user', 'test_user');
    INSERT INTO content ("contentid", "contenttype", "version", "content_status", "username") VALUES (9999999, 'USERINFO', 1, 'current', '2c9681954172cf560000000000000001');

    (info) For MySQL, we need to remove double quotes around column identifiers in order to prevent 1064 syntax errors. Eg. "contentid" will be contentid.

    (info) 診断クエリで返された各ユーザーについて、"test_user" の値をユーザーのユーザー名で置き換えます。また、挿入される各レコードについて、一意の user_key 値 (例: 2c9681954172cf560000000000000001')) を使うようにします

  4. Confluence を再起動します。


最終更新日: 2022 年 10 月 19 日

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

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