トランザクションの状態一覧

CORBA トランザクションサービス(OTS)、およびJava Transaction API(JTA)で規定されているトランザクションの状態には次のものがあります。

なお、右側の○×は次のことをあらわしています。

C:強制コミット処理が実施可能な場合は○、不可能な場合は×です。
R:強制ロールバック処理が実施可能な場合は○、不可能な場合は×です。
F:破棄(フォゲット)処理が実施可能な場合は○、不可能な場合は×です。
D:強制削除処理が実施可能な場合は○、不可能な場合は×です。

これらの処理は統合運用管理ツール、およびコマンドから行うことができます。


状態 説 明 C R F D
StatusActive トランザクションがアクティブ状態であることを示します。これはトランザクションが開始された後にコミットあるいはロールバック処理が実行されておらず、かつロールバックオンリーにマーク付けされていない状態です。 × ×
StatusMarkedRollback トランザクションがロールバックオンリーにマーク付けされている状態であることを示します。最終的にはロールバックされることになります。CosTransactions.Coordinator.rollback_only、およびCosTransactions::Coordinator::rollback_onlyを実行した場合、この状態に遷移します。 × ×
StatusPrepared トランザクションがプリペアされた状態であることを示します。これはトランザクションに登録されたリソースオブジェクトすべてがCosTransactions.Resource.prepare、およびCosTransactions::Resource::prepareの戻りとしてCosTransactions::Voteを返却し、次のどのような処理要求を受けるか待ち合わせている状態です。 ×
StatusCommitted トランザクションがコミット処理を実行している途中でヒューリスティックが発生した状態(人為的な対応が必要な矛盾した状態)になったことを示します。 × ×
StatusRolledBack トランザクションがロールバック処理を実行している途中でヒューリスティックが発生した状態になったことを示します。 × ×
StatusUnknown トランザクションの状態が不明であることを示します。 × ×
StatusNoTransaction トランザクションが既に完了してしまった状態であることを示します。 × × ×
StatusPreparing トランザクションがプリペア処理(第1フェーズ処理)を実行している状態であることを示します。これはトランザクションに登録されたリソースオブジェクトの中で、CosTransactions.Resource.prepare、およびCosTransactions::Resource::prepareの応答を待ち合わせているものが存在しているという状態です。

また、「1フェーズコミット対応リソース」(*1)をトランザクションに参加させている場合、このリソースに対するコミット発行中もこの状態になります。
(*2) ×
StatusCommitting トランザクションがコミット処理を実行している状態であることを示します。これはトランザクションに登録されたリソースオブジェクトの中で、CosTransactions.Resource.commit、およびCosTransactions::Resource::commit、あるいはCosTransactions.Resource.commit_one_phase、およびCosTransactions::Resource::commit_one_phaseの応答を待ち合わせているものが存在しているという状態です。 × ×
StatusRollingBack トランザクションがロールバック処理を実行している状態であることを示します。これはトランザクションに登録されたリソースオブジェクトの中で、CosTransactions.Resource.rollback、およびCosTransactions::Resource::rollbackの応答を待ち合わせているものが存在しているという状態です。 × ×

(*1)
トランザクションに登録されるリソースのうち、1フェーズコミットメントにしか対応していないリソースをさします。2フェーズコミットメントに対応していないデータベースにアクセスするために使用されますが、WebOTXが提供するTransactionサービスでは、それをグローバルトランザクションに参加させ、2フェーズコミットメントに対応したリソースとの調整(データベース同時更新)を可能にするための機構を提供しています。
(*2)
 「1フェーズコミット対応リソース」をトランザクションに参加させている場合、1フェーズコミット対応リソースに対するコミットを発行している最中は、Preparing状態と表示されます。

 1フェーズコミット対応リソースのコミット中に障害が発生した場合、トランザクション全体をコミットさせるべきかロールバックさせるべきかの判断をTransactionサービス(トランザクションマネージャ)自身が下すことができません。トランザクションの操作をオペレータにより行う必要があります。このような運用にしている根拠については、 「 構築・運用 > ドメインの拡張機能 > Transactionサービス」 に詳細を記載しています。

 なお、1フェーズコミット対応リソースがトランザクションに参加していない場合は、Transactionサービスで判断できるのでコミットを発行すると失敗します。