11.24.3 ヒューリスティックな判断に関するエラー
tpcommit()
関数は、TP_COMMIT_CONTROL
の設定に応じて、TPEHAZARD
またはTPEHEURISTIC
を返します。
TP_COMMIT_CONTROL
にTP_CMT_LOGGED
を設定すると、2フェーズ・コミットの第2フェーズの実行前にアプリケーションに制御が移ります。その場合、第2フェーズ中に発生したヒューリスティックな判断がアプリケーションで認識されないことがあります。
TPEHAZARD
またはTPEHEURISTIC
は1フェーズ・コミットで返すことができます。ただし、これが可能なのは、トランザクションに関与しているリソース・マネージャが1つだけで、1フェーズ・コミットでこのリソース・マネージャがヒューリスティックな判断を返すか、なんらかの障害の発生を示す場合です。
TP_COMMIT_CONTROL
にTP_CMT_COMPLETE
を設定すると、リソース・マネージャがヒューリスティックな判断を通知する場合はTPEHEURISTIC
が返され、リソース・マネージャがなんらかの障害を通知する場合はTPEHAZARD
が返されます。TPEHAZARD
は、コミットの第2フェーズ(または1フェーズ・コミット)で参加リソースになんらかの障害が発生し、トランザクションが正常終了したかどうかがわからない状況を示します。
親トピック: トランザクション・エラー