TREstart

TRESTARTコマンドは、現在のトランザクションのRESTARTを試みます。そのTSTARTが最初に実行された時に、RESTARTは、最初のTSTARTに戻って制御を移行し、それが何であったかについて多くのプロセスの状態を復元します。トランザクションが進行中でない時($TLEVEL= 0)、または、トランザクションが有効なRESTARTを持たない時、発行されたTRESTARTは、エラーを生成します。

TRESTARTコマンドは、GT.Mがリソースの競合の場合にトランザクションを暗黙的に再起動するのと同じ方法で、TPトランザクションをRESTARTにします。すべての再起動は、内部トランザクションの再試行回数を最大3回増やします。その時点で、GT.Mは、トランザクションで参照されるすべてのデータベースのクリティカル・セクション内でTPトランザクション全体を実行します。

GT.Mは、アプリケーション・コードが、$TRESTART=4の間にトランザクション中に複数回 TRESTARTを試行しているときに TRESTMAX ランタイムエラーを発行します(注:健全であるためには、アプリケーション・コード内のTRESTARTの使用は常に条件付きでなければなりません)。最後の再試行では、GT.Mはトランザクションに関与するすべてのデータベース上のクリティカル・セクション・ロックを保持します。TRESTARTは、現在のトランザクションで行われたすべての作業をキャンセルし、制御をTSTARTに戻すので、最後の再試行でこれを実行できる回数を制限することで(データベースに対するクリティカルセクションのロックを保持することにより)、プロセスが他のプロセスがデータベースを更新できないようにすることができます。

GT.Mは、同様の方法でM-ロックの非可用性のために、最終の再試行でTPの再開を制限します。GT.Mでは最大16回の再起動が可能で、その後にTPLOCKRESTMAXランタイムエラーが発行されます。

TRESTARTコマンドのフォーマットは次のとおりです。

TRE[START][:tvexpr]

それらは、また、それらが最初に命名されていた時にそれらが持っていた値に、1つ以上のアクティブなTSTARTによって名付けられたローカル変数を復元します。

TRESTARTコマンドの使用例については、第5章: “"Mの一般的な言語特徴" を参照してください。

inserted by FC2 system