Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform 使用の手引


2.6.3 提供APIエラー

SDBハンドラ機能が提供するAPIの延長でエラーが発生した場合,エラー内容に応じて次の動作を行います。

〈この項の構成〉

(1) デッドロック

デッドロックまたは排他待ち時間超過が発生した場合,sdh_deadlock_modeオペランド指定値に従い後処理を行います。指定値ごとのエラー後動作を次に示します。

(2) 無排他モードの参照系DBアクセスと更新系DBアクセスが競合

無排他モードによる参照系DBアクセス中,他トランザクションが更新系SDBデータベースアクセスで同一レコードにアクセスした場合,参照系DBアクセスは失敗します。その後,sdh_nlocksqlerr_modeオペランド指定値に従い後処理を行います。次に,指定値ごとのエラー後動作を示します。

(3) その他のエラー

デッドロック以外のエラーが発生した場合,KFSB54304-Eメッセージ出力後,エラーに対応するSDHステータスコードを設定し,提供APIがエラーリターンします。このとき,続行可能なSDHステータスコードを除き,以降,当該インタフェースエリアでは,個別終了以外のSDBハンドラ提供APIが使用できません。使用した場合は提供APIがエラーリターンします。続行可能なSDHステータスコードを次の表に示します。また,SDBハンドラでは,ee_trn_rollback_mark(トランザクションのロールバック指示)を発行しません。そのため,ユーザは,必要に応じて後処理(ロールバック,リトライなど)を行ってください。ただし,HiRDBで暗黙的ロールバックが発生した場合,またはSDBデータベースアクセス続行不可能なSDHステータスコードが発生した場合は,SDBハンドラでee_trn_rollback_mark(トランザクションのロールバック指示)を発行し,エラーに対応するSDHステータスコードを設定し,提供APIがエラーリターンします。以降,当該トランザクションでは,個別終了以外のSDBハンドラ提供APIが使用できません。使用した場合は提供APIがエラーリターンします。SDBデータベースアクセス続行可能なSDHステータスコードを表2-34に,続行不可能なSDHステータスコードを表2-35に示します。

注※

環境変数EEPARM1に「00000004」を指定した場合だけ,ログに出力します。

表2‒34 SDBデータベースアクセス続行可能なSDHステータスコード一覧

項番

SDHステータスコード

項番

1

00000

正常終了。

2

00100

レコードが見つかりません。

3

01810

レコードはすでに存在します。

4

10072

データの終わりを検出しました。

表2‒35 SDBデータベースアクセス続行不可能なSDHステータスコード一覧

項番

SDHステータスコード

意味

1

11279

MAM/TAMデータベースに格納するデータのユーザキーがLASTポインタが示すレコードのユーザキーより小さいかまたは同じです。