Cosminexus V9 アプリケーションサーバ メッセージ(構築/運用/開発用)

[目次][前へ][次へ]

KFCB40136-W

A global transaction is taking too long to complete. (status = aa....aa, global transaction ID = bb....bb, info = cc....cc)

aa....aa:決着処理に時間が掛かっているトランザクションのステータス
bb....bb:決着処理に時間が掛かっているトランザクションのアプリケーションサーバのグローバルトランザクションID
cc....cc:保守情報
[要因]
グローバルトランザクションの決着処理に時間が掛かっています。
OpenTP1から伝播したトランザクションの状態が,Prepared状態またはヒューリスティック決着状態(HeuristicHazard,HeuristicMixed,HeuristicRollback,HeuriticCommit)に遷移してから30秒以上経過すると,このメッセージを出力します。
bb....bbで出力されたトランザクションがアプリケーションサーバ内に残るおそれがあります。
[対策]
トランザクションの状態aa....aaに応じて対処してください。
  • aa....aaがPreparedの場合
    OpenTP1のトランザクションの状態を確認し,状態に応じてアプリケーションサーバのコマンドを使用してトランザクションを決着してください。
    手順を次に示します。
  1. アプリケーションサーバのcjlisttrnコマンドを実行し,アプリケーションサーバに関連づいたOpenTP1のトランザクショングローバル識別子を確認します。このとき-gidオプションにbb....bbで出力されたグローバルトランザクションIDを指定します。
    bb....bbの値がd13800010000000000000000000000fefb58e6480000000000000001の場合のコマンド実施例を次に示します。
    > cjlisttrn MyServer -gid d13800010000000000000000000000fefb58e6480000000000000001 -tp1
    [Global transaction information]
    Status            GlobalTransactionId                                      ElapsedTime BranchType TP1TRNGID        TP1TRNBID
    ----------------- -------------------------------------------------------- ----------- ---------- ---------------- ----------------
    Prepared          d13800010000000000000000000000fefb58e6480000000000000001          30 Sub        cab9TP1S0000074f @@@@TP1S0000074f
     
    total count:1
  2. 1.で表示されたトランザクショングローバル識別子を持つトランザクションの状態をOpenTP1のtrnlsコマンドで確認します。OpenTP1でのコマンド実行例を次に示します。
    > trnls -T cab9TP1S0000074f
  3. OpenTP1のトランザクションの状態によってトランザクションの決着方法が異なります。
  • OpenTP1のトランザクション情報が出力されない場合
    OpenTP1のコマンド実施結果を次に示します。
    > trnls -T cab9TP1S0000074f
    TRNGID                 TRNBID             状態                       PID    サーバ
    アプリケーションサーバのトランザクションをcjrollbacktrnコマンドを使用しロールバックで決着します。
    アプリケーションサーバのコマンド実行例を次に示します。
    > cjrollbacktrn MyServer -gid d13800010000000000000000000000fefb58e6480000000000000001
  • OpenTP1のトランザクションの状態がHEURISTIC_FORGETTINGの場合
    OpenTP1のコマンド実行結果を次に示します。
    > trnls -T cab9TP1S0000074f
    TRNGID                 TRNBID             状態                       PID    サーバ
    cab9TP1S0000074f       TP1STP1S0000074f   HEURISTIC_FORGETTING(u,n)  30446   TP1S
    アプリケーションサーバのトランザクションをcjcommittrnコマンドを使用しコミットで決着します。
    アプリケーションサーバのコマンド実行例を次に示します。
    > cjcommittrn MyServer -gid d13800010000000000000000000000fefb58e6480000000000000001
  • OpenTP1のトランザクションの状態がHEURISTIC_COMMITまたはHEURISTIC_ROLLBACK状態の場合
    トランザクションの状態がHEURISTIC_COMMITの場合のOpenTP1のコマンド実行結果を次に示します。
    > trnls -T cab9TP1S0000074f
    TRNGID                 TRNBID             状態                       PID    サーバ
    cab9TP1S0000074f       TP1STP1S0000074f   HEURISTIC_COMMIT(u,n)      30446   TP1S
    OpenTP1に関連づいたリソースマネジャが,コミット決着またはロールバック決着したかを確認してください。リソースマネジャのトランザクションの決着種別に応じて,アプリケーションサーバが管理するトランザクションをcjcommittrnコマンドまたはcjrollbacktrnコマンドで決着してください。
    トランザクションをコミットする場合のアプリケーションサーバのコマンド実行例を次に示します。
    > cjcommittrn MyServer -gid d13800010000000000000000000000fefb58e6480000000000000001
    OpenTP1のトランザクションの復旧はOpenTP1の運用に従ってください。
  • OpenTP1のトランザクションの状態が上記以外の場合
    OpenTP1はトランザクションを決着処理中です。
    しばらく時間をおき,トランザクションの状態ごとの上記の手順に従って,必要に応じてトランザクションを決着してください。
  • aa....aaがHeuristicHazard,HeuristicMixed,HeuristicRollback,HeuriticCommitの場合
    アプリケーションサーバに関連づいたリソースの一貫性が保たれていないおそれがあります。次の手順に従って,アプリケーションサーバに関連づいたリソースの状態を確認し,トランザクションを強制終了してください。
  1. アプリケーションサーバに関連づいたリソースで,bb....bbに出力されたグローバルトランザクションIDを持つトランザクションが,コミット決着またはロールバック決着したかを確認してください。また,トランザクションの一貫性が保たれていない場合は修復してください。
  2. cjforgettrnコマンドでアプリケーションサーバのトランザクションを強制終了してください。
    bb....bbの値がd13800010000000000000000000000fefb58e6480000000000000001の場合のコマンド実行例を次に示します。
    > cjforgettrn MyServer -gid d13800010000000000000000000000fefb58e6480000000000000001