java.lang.NumberFormatException: For input string: "false" occurs when loading user list or logging in

お困りですか?

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

コミュニティに質問

プラットフォームについて: 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 は除く

要約

When browsing the user list, either in Jira Admin → Users, or, via Project Settings → Users and Roles, the page crashes with "Error 500", with the following stack trace being included:

java.lang.NumberFormatException: For input string: "false"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Long.parseLong(Long.java:589)
	at java.lang.Long.valueOf(Long.java:803)
	at com.atlassian.jira.security.login.LoginStoreImpl.getLong(LoginStoreImpl.java:143)

In addition, some users may not be able to log in, receiving the same error.

環境

  • Jira Server or Data Center
  • Possibly other products also that use the Embedded Crowd libraries, such as Confluence

診断

  • The following query returns more than 1 rows

    select * from cwd_user_attributes where lower_attribute_value = 'false' and attribute_name != 'requiresPasswordChange';

    および

  • There is 1 or more attribute_name  returned from the query above is listed as something that would normally store a numeral. This includes the following:

    "login.lastLoginMillis";
    "login.previousLoginMillis";
    "login.lastFailedLoginMillis";
    "login.count";
    "login.currentFailedCount";
    "login.totalFailedCount";

原因

An unknown process or function of Jira stores a string, "false" in the lower_attribute_value  column of the table cwd_user_attributes  that is expected to be a number. When this row is read by the application, it cannot be interpreted and is not handled gracefully, thus, the requested operation fails.

ソリューション

  1. Update the rows identified by the ID fields located in the Diagnosis query to be a valid integer:

    UPDATE cwd_user_attributes 
    SET lower_attribute_value = 1639454041, attribute_value = 1639454041
    WHERE id IN (list,of,id,from,diagnosis,query)

    (info) In the case of the attribute_name  ending with "millis", the above attribute_value  is appropriate. It is a valid unix epoch timestamp. In the case of others (eg, ones ending with "count") you may want to adjust attribute_value  to something more sensible, like 1

  2. After running the query, check the affected functions of Jira to check if they are working again. If not, you may need to restart the application in order to flush any cached values





最終更新日: 2021 年 12 月 14 日

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

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