データベースへのアクセスが失敗してデータベースエラーが発生する

接続障害が発生すると、Klocwork ツールでプライマリデータベースとの通信に使用されるドライバーが、再接続に必要なエラーコードと SQL 状態値を返します。

Klocwork 2025.1 では、MySQL データベースドライバーが MariaDB ドライバーに置き換えられました。これら 2 つのドライバーによって返されるエラーコードと SQLSTATE 値は異なるため、リリース 2025.1 以降では、特定の接続障害によって、間違ったエラーにマップされた値、またはまだ考慮に入れられていない値が発行される可能性があります。

潜在的な接続障害を最小限のダウンタイムで解決するため、プロジェクト管理者は追加の接続障害値を考慮に入れることができます。

エラー署名は、projects_root\config\klocwork.log に表示され、以下の正規表現パターンに一致します。

.*ERROR .*An exception occurred while executing .*Failed to access the database: Database error occurred: \(conn=[\d]+\) Connection is closed in SQL statement .*
以下のアクションを実行するには、Validate のプロジェクト管理者の役割がアカウントに割り当てられている必要があります。
  1. Validate で、https://<your-server-name>/review/insight-review.html#logconf に移動して、デバッグレベルのロギングをオンにします。[ロギング構成] ページが表示されます。
  2. ロギング構成ファイルの最後に、以下のいずれかの行を追加します。
    • このエラーを初めてトラブルシューティングする場合:
      log4j.logger.com.klocwork.database.config.MySQLDatabaseConfiguration=DEBUG
    • このエラーを以前にトラブルシューティングしても問題が解決しなかった場合:
      log4j.logger.com.klocwork.database.config.MySQLDatabaseConfiguration=TRACE
  3. [適用] をクリックします。
  4. エラーが再現されるまで待ちます。
  5. 以前にログ構成ファイルに追加した DEBUG 行または TRACE 行を削除します。[SQL クエリのログ記録] チェックボックスと [プロファイル SQL] チェックボックスをオフにしてから、[適用] をクリックします。
  6. 以下のパターンに一致するメッセージが projects_root\config\klocwork.log ファイルに含まれるようになります。
    Will not refresh connection for error code: "<CODE>" and sql state: "<STATE>".
  7. Validate パッケージの config フォルダーに、maria_reconnect_codes.json という名前のファイルを作成します。projects_root\config\klocwork.log で見つかった値を、以下の構造を使用して config\maria_reconnect_codes.json に追加します。
    [
    {"errorCode": "<CODE>", "sqlState": "<STATE>"},
    ]

    例:

    [
    {"errorCode": "<CODE>", "sqlState": "<STATE>"},
    ]
  8. Validate サーバーを再起動します。