11.24.3 ヒューリスティックな判断に関するエラー

tpcommit()関数は、TP_COMMIT_CONTROLの設定に応じて、TPEHAZARDまたはTPEHEURISTICを返します。

TP_COMMIT_CONTROLTP_CMT_LOGGEDを設定すると、2フェーズ・コミットの第2フェーズの実行前にアプリケーションに制御が移ります。その場合、第2フェーズ中に発生したヒューリスティックな判断がアプリケーションで認識されないことがあります。

TPEHAZARDまたはTPEHEURISTICは1フェーズ・コミットで返すことができます。ただし、これが可能なのは、トランザクションに関与しているリソース・マネージャが1つだけで、1フェーズ・コミットでこのリソース・マネージャがヒューリスティックな判断を返すか、なんらかの障害の発生を示す場合です。

TP_COMMIT_CONTROLTP_CMT_COMPLETEを設定すると、リソース・マネージャがヒューリスティックな判断を通知する場合はTPEHEURISTICが返され、リソース・マネージャがなんらかの障害を通知する場合はTPEHAZARDが返されます。TPEHAZARDは、コミットの第2フェーズ(または1フェーズ・コミット)で参加リソースになんらかの障害が発生し、トランザクションが正常終了したかどうかがわからない状況を示します。