JP3290052B2 - ソフトウエア故障回復のための再使用可能なソフトウエアモジュールを持つプログレッシブ再試行法及び装置 - Google Patents

ソフトウエア故障回復のための再使用可能なソフトウエアモジュールを持つプログレッシブ再試行法及び装置

Info

Publication number
JP3290052B2
JP3290052B2 JP15574395A JP15574395A JP3290052B2 JP 3290052 B2 JP3290052 B2 JP 3290052B2 JP 15574395 A JP15574395 A JP 15574395A JP 15574395 A JP15574395 A JP 15574395A JP 3290052 B2 JP3290052 B2 JP 3290052B2
Authority
JP
Japan
Prior art keywords
message
recovery
messages
checkpoint
fault
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP15574395A
Other languages
English (en)
Other versions
JPH0830476A (ja
Inventor
ケント フックス ウェスレイ
ファン エンナン
モハン キンタラ チャンドラ
ワン イー−ミン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Original Assignee
AT&T Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AT&T Corp filed Critical AT&T Corp
Publication of JPH0830476A publication Critical patent/JPH0830476A/ja
Application granted granted Critical
Publication of JP3290052B2 publication Critical patent/JP3290052B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的には、メッセー
ジパシング用途において使用されるためのソフトウエア
の故障をバイパスするためのシステム、より詳細には、
ソフトウエアの故障の回復の範囲をソフトウエアの故障
がバイパスされるまで徐々に増加させるプログレッシブ
再試行法に基づいてバイパスするための方法と装置に関
する。
【0002】
【従来の技術】ソフトウエアアプリケーションの利用者
は、そのソフトウエアが故障に対して耐性であることを
ますます要求するようになっている。より具体的には、
ユーザは、故障耐性の二つの要素、つまり、そのアプリ
ケーションソフトウエアの利用性とデータの一貫性の問
題に関心を持っている。例えば、電話通信交換システム
のユーザは、交換システムが継続して利用できることを
要求する。ただし、金融取引を巻き込む伝送、例えば、
銀行テラーマシンに対しては、顧客は、最高水準のデー
タの一貫性についても要求する。
【0003】ただし、複数の平行プロセスを実行する分
散システムにおいては、メッセージと計算が互いに入り
込み、処理が複雑で、時間に依存する性質があるため
に、ソフトウエアデバッギングの際にいくら検証、確
認、テストを行なったとしても、全てのソフトウエアの
故障を検出及び排除し、そのアプリケーションの利用性
とデータの一貫性に完全な信頼性を与えることは不可能
といえる。従って、テストされなかった境界条件、予期
されなかった例外及び予期されなかった実行環境に起因
する残留故障が、テスト及びデバッギングプロセスを逃
れ、プログラム実行の際にトリガされたとき、本性を現
し、アプリケーションプロセスをクラッシュ或はハング
させ、結果として、サービスを中断させる事態が観察さ
れる。
【0004】
【発明が解決しようとする課題】従って、これら残留す
るソフトウエアの故障を自動的に検出及びバイパスし、
ソフトウエアの故障からの回復を許す効果的なオンライ
ン再試行メカニズムを開発することが要望される。多く
の研究は、生産システム内での多くのソフトウエアの故
障が過渡的な振る舞いを見せることを示す。従って、こ
のような過渡的なソフトウエアの故障から回復するため
の最も簡単な方法として、異なる条件下でそのアプリケ
ーションプロセスを再開し、こうして同一のプロセスを
実行することが知られている。このアプローチは、通
常、環境多様性と称される。ただし、あるシステムの再
開は、通常、包括的な初期化手続きを必要とし、従っ
て、潜在的にかなり多量のサービスの中断を要求する。
【0005】現在、システムの再開に伴って失われる時
間の損失を最小にするために、過渡的なハードウエア故
からより効率的に回復することを目的とした多数のチ
ェックポイント及びロールバック回復技法が提案されて
いる。チェックポイント及びロールバック回復技法の一
般的な議論に関しては、R.Koo 及びS.Toueg によって、
IEEE Trans. Software Eng.、 Vol. SE-13、 No.1、pp.23-
31 (Jan. 1987)に掲載の論文『Checkpointing and Roll
back-Recovery for Distributed Systems 』を参照され
たい。概略すると、チェックポイントとは、あるアプリ
ケーションプロセスと関連するデータの定期的なバック
アップコピーであり、この技法は、アプリケーションプ
ロセスがバックアップメモリデバイス内に格納されたこ
のチェックポイントから再開することを許す。
【0006】ただし、過渡的なソフトウエア故障から回
復することを目的としたチェックポイント及びロールバ
ック回復技法については、殆ど提案されてないのが実情
である。ここでは、以前に過渡的なハードウエア故障に
対して開発されたロールバック技法を、ソフトウエア故
障をバイパスするためにメッセージの再プレイ及びメッ
セージの並べ替えを利用してソフトウエアエラーから回
復するためにも使用することが提示される。
【0007】上の議論から明らかなように、最初は、よ
り迅速な回復を達成するためにロールバックにおいて巻
き込まれるプロセスの数及び全ロールバック距離を含む
ロールバックの範囲を最小に押えて過渡的なソフトウエ
ア故障をバイパスするタイプのプログレッシブ再試行シ
ステムが要望される。さらに、前の再試行の試みが失敗
した場合、各再試行ステップ毎にロールバック距離と影
響を受けるプロセスの数を漸進的に増大させ、こうし
て、非決定論的想定の程度を徐々に増大させるタイプの
回復システムが要望される。
【0008】
【課題を解決するための手段】概説すると、本発明の一
面によると、メッセージパシングメカニズムを介して通
信する複数の平行アプリケーションプロセスを監視する
ための故障耐性(許容)計算システムが提供される。こ
の故障耐性計算システムは、アプリケーションプロセス
をクラッシュ或はハングさせる原因となるそのアプリケ
ーションプロセス内の故障(障害)を検出する。その
後、故障耐性計算システムは、プログレッシブ再試行回
復アルゴリズムを利用してアプリケーションプロセスの
回復を開始するが、このアルゴリズムは、前の再試行ス
テップが検出された故障をバイパスすることに失敗する
と、回復の範囲を徐々に増大させる。
【0009】本発明のもう一面によると、この故障回復
計算システムは、アプリケーションプロセスを監視する
ための少なくとも一つのウォッチドッグを含む。加え
て、このウォッチドッグは、検出された故障をバイパス
することを試みる回復アルゴリズムを実行するための再
開サブシステムを含む。
【0010】本発明の一面によると、あるアプリケーシ
ョンプロセスは、故障耐性ライブラリからの適当なファ
ンクションをそのアプリケーションプロセスのコード内
に挿入することによって故障耐性にされる。好ましく
は、この故障耐性ライブラリは、所定の間隔でウォッチ
ドッグに関連するプロセスがまだアクティブであること
を示すハートビートメッセージを送信するハートビート
ファンクションを含む。ウォッチドッグがそのアプリケ
ーションプロセスから所定の間隔が終る前に次の信号を
受信しない場合は、ウォッチドッグは、そのアプリケー
ションプロセスがハング或はクラッシュしたものと見な
す。
【0011】加えて、故障耐性ライブラリは、あるアプ
リケーションプロセス内のクリティカルデータを指定す
ることを許すクリティカルメモリファンクションを含
む。加えて、故障耐性ライブラリには、指定されたクリ
ティカルデータをチェックポイントファンクションがア
プリケーションプロセスに対して実行される度に不揮発
性メモリの領域にコピーするチェックポイントファンク
ションが提供される。故障耐性ライブラリは、好ましく
は、さらに、あるアプリケーションプロセスが回復モー
ドにおいて不揮発性メモリからチェックポイントデータ
を回復することを可能にする回復ファンクションを含
む。
【0012】故障回復ライブラリは、好ましくは、さら
に、各出力メッセージをセンダログファイル内にそのメ
ッセージがそのアプリケーションプロセスによって伝送
される前に登録するための故障耐性書込みファンクショ
ンftwrite を含む。あるアプリケーションプロセスが通
常のモードにあるときは、この書込みファンクション
は、メッセージを他のプロセスに送信し、メッセージが
送信される度にセンダログファイル内にこの情報を加え
る。
【0013】回復状態においては、登録されたメッセー
ジを処理した後に、この書込みファンクションは、各新
たに生成されたメッセージをセンダログファイル内の対
応するメッセージと比較することによって、ピースワイ
ズ決定論的想定の検証を行う。回復において生成された
メッセージが前の実行の際にセンダログファイル内に格
納されたメッセージと同一である場合は、そのメッセー
ジは、再伝送する必要はない。ただし、これらメッセー
ジが同一でない場合は、非決定論的な事象が発生した証
拠であり、回復の範囲を増大することが要求される。
【0014】故障耐性ライブラリは、好ましくは、さら
に、入力メッセージをレシーバログファイル内にそれら
が受信アプリケーションプロセスによって処理される前
に登録するための故障耐性読出しファンクションftread
を含む。あるアプリケーションプロセスが通常のモード
にあるときは、読出しファンクションは、通信チャネル
からデータを読出し、受信されたメッセージをレシーバ
ログファイル内に登録する。
【0015】回復状態においては、入力データがレシー
バログファイルから回復ラインの所まで読出され、その
後、データが正規の入力チャネルから読出される。一つ
の好ましい実施例においては、読出しファンクション
は、各受信されたメッセージと関連する送信プロセスの
チェックポイント間隔番号をチェックし、その送信プロ
セスのチェックポイント間隔番号が受信プロセスの現在
のチェックポイント間隔番号より大きい場合は関連する
受信アプリケーションプロセスのチェックポイント動作
を開始し、これによって、大域的に一貫性のあるチェッ
クポイントを確保する。加えて、調節されたチェックポ
イントスキームにおいては、読出しファンクションがチ
ェックポイント制御メッセージを受信すると、読出しフ
ァンクションは、アプリケーションプロセスのチェック
ポイント化動作を開始する。
【0016】各アプリケーションプロセスによって受信
されたメッセージのメッセージログ内への登録動作は、
結果として、(上記のチェックポイント)確保状態期間
の終端において“論理”チェックポイントを設定するこ
ととなるが、これは、回復において他のプロセスを巻き
込む傾向を持つロールバック伝播のドミノ効果を最小に
する機能を果たす。
【0017】本発明のもう一面によると、ロールバック
伝播アルゴリズムが提供されるが、これは、監視下のプ
ロセスに対して破棄されてない最後の実チェックポイン
ト或は論理チェックポイントの所の回復ラインを計算す
ることによって回復の範囲を最小にする。
【0018】本発明のもう一面によると、メッセージロ
グ内のメッセージは回復モードにおいて以下のように分
類される。つまり、関連するプロセスによってその最後
の実チェックポイントから計算された回復ラインまでの
間に受信及び処理されたメッセージは、決定論的メッセ
ージとして分類され、一方、メッセージログ内の計算さ
れた回復ラインの前に送信されたが回復ラインの後に受
信されたメッセージは過渡メッセージと称される。メッ
セージログ内の他の全てのメッセージは、回復モードに
おいては破棄される。
【0019】本発明のさらにもう一面によると、本発明
の原理を具現するプログレッシブ再試行アルゴリズムが
あるアプリケーションプロセス内に故障が検出されると
この故障したプロセスの回復を試みるために実行され
る。このプログレッシブ再試行アルゴリズムは、回復に
巻き込まれるプロセスの数及び総合ロールバック距離を
含めた回復の範囲を最小にする。プログレッシブ再試行
アルゴリズムは、その後のステップに、前のステップが
検出された故障をバイパスすることに失敗したときにの
み進む。プログレッシブ再試行アルゴリズムは、以下の
ステップ:つまり、レシーバ再プレイ、レシーバ並べ替
え、センダ再プレイ、センダ並べ替え、及び大域的に一
貫性のあるチェックポイントへの広範囲ロールバック、
から構成される。本発明の一層の理解並びに本発明のそ
の他の特徴及び長所については、以下の詳細な説明と図
面を参照にすることによって得られるものである。
【0020】
【実施例】図1には本発明に従う故障耐性計算システム
5が示される。後に詳細に説明されるように、故障耐性
計算システム5は、メッセージパシングメカニズムを介
して通信を行なう複数の平行アプリケーションプロセス
を監視するための設備を提供する。故障耐性計算システ
ム5はアプリケーションプロセスをクラッシュ或はハン
グさせるアプリケーションプロセス内の故障を検出す
る。すると、故障耐性計算システム5はアプリケーショ
ンプロセスの回復を開始する。本発明の一面によると、
前の再試行ステップが失敗すると次第に回復の範囲を増
大させて行くプログレッシブ再試行回復アルゴリズムが
利用される。
【0021】故障耐性計算システム5は、複数のプロセ
スを実行する単一のノードから成る環境内で実現するこ
とも、或は別の方法として、図1に示されるように、各
々が一つ或はそれ以上のプロセスを実行する相互に接続
された複数のノードから成る環境内で実現することもで
きる。注目すべき点として、多重ノード環境の自然な冗
長は、多重ノード動作と称されるセクションにおいて後
に詳細に説明されるように、あるノードのハードウエア
或はオペレーティングシステムの故障を検出及び回復す
るための向上されたメカニズムを提供する。ここでは、
後に説明の方法によって、あるノード上の故障耐性プロ
セスが別のノード上で再開できる場合は、このプロセス
は、第一のノード上のハードウエア及びオペレーティン
グシステムの故障に耐える。
【0022】システムアーキテクチュア 図1に示されるように、ここに開示される故障耐性計算
システム5の一つの好ましい実施例は、複数の処理ノー
ド、例えば、ノード10と12を含む。別の方法とし
て、故障耐性計算システム5は、周知の方法によってタ
イムシェアリングメカニズムを実現することによって複
数の平行プロセスを実行できる能力を持つ単一の処理ユ
ニットを持つ単一のノードから構成することもできる。
【0023】各ノード、例えば、ノード10と12は、
少なくとも一つの処理ユニット、例えば、処理ユニット
50、52、54、及びメモリユニット、例えば、メモ
リユニット55、57から成るワークステーション或は
他の汎用計算デバイスとして実現することができる。別
の方法として、一つ或はそれ以上の処理ノード、例え
ば、ノード10と12を専用のプログラム制御プロセッ
サ、例えば、電話通信スイッチとして実現することもで
きる。
【0024】一つの実施例においては、故障耐性計算シ
ステム5内の一つ或は複数のノード、例えば、ノード1
0が複数の平行プロセスを実行する能力を持つ平行処理
ワークステーションとして実現される。各処理ユニット
50、52、54は、平行プロセス、例えば、プロセス
0 からPN 及びPA を実行する。あるノード、例え
ば、ノード10が複数のプロセッサ、例えば、プロセッ
サ50と52を含む場合は、各プロセッサは、それ自身
の専用のメモリユニットを持つことも、或は、図1に示
されるように、共通のメモリユニット55を同一ノード
10内の他のプロセッサと共有することもできる。各ノ
ード、例えば、ノード10と12のメモリユニット55
は、典型的には、揮発性メモリ40、42の領域と不揮
発性メモリ44、46の領域を含む。一つの好ましい実
施例においては、各プロセスは、図1に示されるよう
に、メモリユニット55内に揮発性メモリと不揮発性メ
モリの別個に位置された領域、例えば、プロセスPo
対するメモリ領域40、44を持つ。周知のように、揮
発性メモリは、連続的なパワーなしには情報を保持する
ことができない安定でないメモリの領域である。
【0025】各プロセスと関連する揮発性メモリ領域4
0は、好ましくは、各々のアプリケーションプロセスと
関連するソフトウエアコードを格納するためのセクショ
ン80を含む。あるアプリケーションプロセスと関連す
るコードセクション80は、典型的には、アプリケーシ
ョンコード81とアプリケーションコードによって呼び
出される故障耐性ライブラリファンクション82を含
む。故障耐性ライブラリファンクション82は、故障耐
性ライブラリファンクションと称されるセクションにお
いて後に説明されるように、高水準プログラミング言
語、例えば、Cプログラミング言語にて書かれたユーザ
レベルライブラリファンクションである。故障耐性ライ
ブラリファンクション82は、本発明の一面に従って、
あるアプリケーションプロセス内でそのプロセス内の故
障耐性を実現するために使用される。一つの好ましい実
施例においては、故障耐性ライブラリ82からルーチン
を呼び出すアプリケーションコードは、編集の際にこう
して呼び出されたファンクションと一緒に束ねられる。
【0026】加えて、各プロセスと関連する揮発性メモ
リ領域40は、各々のアプリケーションプロセスと関連
するデータを格納するためのデータセクション84を含
む。後に説明される一つの好ましい実施例においては、
故障耐性ライブラリ82は、クリティカルメモリファン
クションを含む。これは、ユーザがアプリケーションプ
ロセスと関連するあるデータをクリティカルなデータで
あると指定することを可能にする。このクリティカルな
データは、好ましくは、故障耐性計算システム5によっ
て、クリティカルメモリ58の領域内に格納される。ユ
ーザによってクリティカルなデータであると指定されな
いアプリケーションプロセス内のデータは、非クリティ
カルメモリ86の領域内に格納される。
【0027】後に詳細に説明される本発明の一面による
と、故障耐性ライブラリ82は、チェックポイントファ
ンクションを含む。これは、アプリケーションプロセス
によって呼び出されると、揮発性メモリ40からのユー
ザによって指定されたクリティカルなデータ85のコピ
ーを、パワーが存在しないときにも情報を保持すること
ができる安定なメモリデバイスである不揮発性メモリ4
4の領域88内に格納する。不揮発性メモリ44は、メ
モリユニット55の一部分とすることも、或は遠隔ファ
イルシステムであってもよい。多重ノード環境において
は、クリティカルメモリコピー88は、好ましくは、後
に説明されるように、主ノードに加えて、バックアップ
ノード上に保存される。
【0028】本発明のさらにもう一面によると、故障耐
性計算システム5によってメッセージログが各プロセス
によって送受されるメッセージに関する情報、例えば、
各メッセージの内容のコピーと、各メッセージがアプリ
ケーションプロセスによって処理された順番に関する情
報を格納するために維持される。一つの好ましい実施例
においては、後にそれぞれ図5aと5bとの関連で説明
されるレシーバログファイル90とセンダファイル92
が、各プロセスに対して、それぞれ関連するプロセスに
よって受信或は送信されたメッセージに関する情報を格
納するために別個に維持される。
【0029】一つの好ましい実施例においては、大域一
貫性チェックポイント確定の各成功において、中央回復
コーディネータ75は、全てのプロセスに対して、新た
なレシーバ及びセンダファイル90、92を開くことを
要求するメッセージを同報通信する。この方法によっ
て、各アプリケーションプロセスに対する現在のレシー
バ及びセンダファイル90、92は、最後の大域一貫性
チェックポイント以降の関連するアプリケーションプロ
セスによって受信されたメッセージに関する情報のみを
格納することとなる。
【0030】後に詳細に説明されるように、あるアプリ
ケーションプロセス内で故障が検出された場合、ログに
基づく回復が本発明に従って実行されるが、これは、故
障プロセスをクリティカルメモリコピー88内に格納さ
れた最後のチェックポイントから再開し、次に、最後の
チェックポイント以降に送信或は受信されたメッセージ
ログ90、92からのメッセージを再プレイし、故障が
検出されたポイントまでのプロセス状態を再生すること
によって実現される。
【0031】個々のノード、例えば、ノード10の処理
ユニット50、52及びメモリユニット55は、周知の
方法にてノード内通信のためにバス60或はローカルノ
ード上のプロセス間通信(ICP)設備によって相互接
続される。これに加えて、各ノード10、12は、他の
ノード及び中央回復コーディネータ75と、後に説明さ
れるように、ノード間通信のために、周知の方法にて、
通信網65とデータリンク67−71を介して相互接続
される。
【0032】図1に示されるように、各ノード、例え
ば、ノード10は、ウォッチドッグ15を持つが、これ
は、各々のノード上で実行しているプロセスを監視する
ためのエラー検出モニタ20を含む。ウォッチドッグ1
5は、図4aとの関連で後に詳細に説明される故障耐性
プロセスリスト25を維持する。これは、ウォッチドッ
グ15によって監視されるべき各々のノード10上で実
行しているプロセスをリストする。
【0033】ウォッチドッグ15のエラー検出モニタ2
0は、故障耐性プロセスリスト25内にリストされた各
アプリケーションプロセス、例えば、プロセスP0 を絶
え間なく監視し、そのプロセスがハング或はクラッシュ
したか調べる。エラー検出モニタ20によって遂行され
る監視は、能動的であっても受動的であってもよい。能
動的な監視構成においては、ウォッチドッグ15は、各
監視されるアプリケーションプロセスをポリーングし、
その状態を決定する。これはそのプロセスにローカルノ
ード10上のプロセス間通信(ICP)設備を使用して
メッセージを送り、返された値を評価することによっ
て、そのプロセスがまだアクティブであるか決定するこ
とによって行なわれる。
【0034】受動的な監視構成においては、各アプリケ
ーションプロセスは、後に説明される故障耐性ライブラ
リ82からのファンクションを含む。これは、関連する
プロセスがまだアクティブであることを示すハートビー
トメッセージを所定の間隔でウォッチドッグ15に送
る。ウォッチドッグ15が所定の間隔が終了するまでに
アプリケーションプロセスからの次の信号を受信しない
場合は、ウォッチドッグ15は、アプリケーションプロ
セスがハング或はクラッシュしたものとみなす。
【0035】ウォッチドッグ15はまた図7から14と
の関連で後に説明される本発明に従うプログレッシブ再
試行回復アルゴリズム700を実行するための再開サブ
システム30を含む。後にさらに詳細に説明されるよう
に、エラー検出モニタ20によってアプリケーションプ
ロセス内の故障が発見されると、再開サブシステム30
は、故障アプリケーションプロセスの回復を試みる。こ
れは、後に説明される方法によって、この最後のチェッ
クポイントの所で、故障したアプリケーションプロセス
の再開を先導し、最後のチェックポイント以降のセンダ
及びレシーバログファイル90、92内に登録されたメ
ッセージの再処理を行ない、故障したアプリケーション
プロセスをクラッシュが検出されたポイントの状態にま
で持って行くことによって達成される。
【0036】本発明の一面によると、プログレッシブ再
試行回復アルゴリズム700は、チェックポイント化動
作、ロールバック、メッセージ再プレイ及びメッセージ
並べ替え動作を利用して、回復に伴うプロセスの数、並
びに総ロールバック距離を最小にする。図7から14と
の関連で下に説明されるように、プログレッシブ再試行
回復アルゴリズム700は、前の再試行ステップが失敗
すると、ロールバックの範囲を徐々に増大させる複数の
再試行ステップから構成される。
【0037】一つの好ましい実施例においては、中央回
復コーディネータ75がセットの大域的に一貫性のある
チェックポイントを維持し、ロールバック伝播の範囲を
最小にし、また、回復モードの際に、後に説明されるよ
うに、回復ラインを計算するために利用される。好まし
くは、中央回復コーディネータ75は、現在故障耐性計
算システム5によって監視されており、各々が実行中で
ある全てのアプリケーションプロセスをリストする故障
耐性プロセスリトス25のコピーを含む。
【0038】加えて、中央回復コーディネータ75は、
好ましくは、セットの一貫性のある大域チェックポイン
トを維持するための大域チェックポイントコーディネー
タ77を含む。大域チェックポイントは、各監視される
アプリケーションプロセスからの一つのチェックポイン
トを持つセットのチェックポイントである。ロールバッ
ク伝播規則によると、あるメッセージの送信プロセスが
最後のチェックポイントにロールバックし、あるメッセ
ージの送信を取り消すと、そのメッセージの受信プロセ
スもロールバックし、そのメッセージの受信を取り消
す。こうして、一貫性のある大域チェックポイントと
は、ロールバック伝播規則を犯す任意の二つのチェック
ポイントを含むことのない大域的なチェックポイントで
ある。
【0039】一つの実施例においては、チェックポイン
ト化動作が開始され、後に説明されるチェックポイント
ファンクションを使用して一つのプロセスによって成功
裡に確定される度に、この事実が中央回復コーディネー
タ75に通知される。中央回復コーディネータ75は、
すると、好ましくは、一つのメッセージを全ての他の監
視されているアプリケーションプロセスに、これらに適
当なチェックポイントを取るように送信し、こうして、
結果としてのセットのチェックポイントが一貫性を持つ
ことが保証される。
【0040】加えて、大域的に一貫性のあるチェックポ
イントは、通信誘発チェックポイント化動作を実現する
ことによって確保することもできる。この方法において
は、メッセージを受信するプロセスは、そのメッセージ
の見出し情報内に示される送信プロセスのチェックポイ
ント間隔番号が受信プロセスのチェックポイント間隔番
号よりも大きな場合は、一つのチェックポイントを取
る。その後、その受信プロセスと関連するウォッチドッ
グ15が新たなチェックポイントの指標を中央回復コー
ディネータ75の大域チェックポイントコーディネータ
77に送信する。
【0041】一つの代替の実施例として、レイジーチェ
ックポイント調節を使用する無調節チェックポイントシ
ステムを実現することも可能である。これに関しては、
Yi-Min Wang とW.Kent Fuchsによって、Proc. IEEE Sym
posium Reliable Distributed Propagation、pp.78-85
(Oct. 1993 ) に掲載の論文『Lazy Checkpoint Coordin
ation for Bounding Rollback Propagation』における
レイジーチェックポイント調節スキームの説明を参照す
ること。加えて、中央回復コーディネータ75は、好ま
しくは、さらに、回復ライン計算サブシステム79を含
むが、これは、図15aと15bとの関連で後に詳細に
説明される回復ライン計算アルゴリズム1500を実現
する。
【0042】回復の概念と定義 回復の概念と定義の詳細な議論に関しては、Yi-Min Wan
g らによって、Proc.of 23d IEEE Conf. on Fault-Tole
rant Computing System (FTCS)、pp.138-144(June、199
3)に掲載の論文『Progressive Retry Technique for S
oftware ErrorRecovery in Distributed Systems』を参
照されたい。一般的に、エラー検出モニタ20があるプ
ロセス、例えば、図2aのプロセスPa 内に“F1 ”と
マークされているポイントにおいて故障を検出すると、
ウォッチドッグ15の再開サブシステム30は、プロセ
スPa のPa と関連する最後のチェックポイントCa、4
までのロールバックを、クリティカルメモリコピーから
のプロセスPa と関連する最後のチェックポイントデー
タを回復することによって開始する。プロセスPa のチ
ェックポイントCa、4 へのロールバックは、メッセージ
a の送信を取り消す。従って、プロセスPb も、発信
プロセスがロールバックしてメッセージの送信を取り消
した場合は、受信プロセスもロールバックしてそのメッ
セージの受信を取り消さなければならないことを記述す
るロールバック伝播規則を満足させるために、Ma の受
信の前の状態までロールバックし、メッセージMa の受
信を取り消さなければならない。さもなければ、メッセ
ージMa が故障耐性計算システム5内で“受信されたが
ただし送信されてない”と記録され、結果として、シス
テム状態の非一貫性が発生することとなる。
【0043】ただし、本発明の一面によると、プロセス
a は、Ma がそこから生成された状態を再生すること
が可能であり、こうして、正当にとどまるためにMa
受信に基づいてPb を実行することを許す。こうして、
プロセスPb は、メッセージMa の受信を取り消すため
にロールバックする必要はなくなる。これは、後に説明
されるピースワイズの決定論的想定及び最後の実チェッ
クポイント以降のレシーバ及びセンダログファイル9
0、92内にプロセスPa に対して登録されているメッ
セージを利用して達成することができる。
【0044】あるプロセスによる各メッセージの受信
は、予測不能な或は非決定論的な事象であるが、ただ
し、このピースワイズ決定論的想定は、状態間隔と称さ
れる任意の二つの連続して受信されたメッセージ間のプ
ロセス実行は、決定論的であることを記述する。そこ
で、あるプロセスがメッセージ内容と受信されたメッセ
ージの処理順番の両方を登録している場合は、そのログ
内のメッセージの決定論的再プレイによって各々のプロ
セスの状態を再生することが可能である。前述したよう
に、あるプロセスによってあるメッセージが受信される
度に、非決定論的事象は、レシーバログファイル90内
に登録され、これは、結果として、続いて起こる状態間
隔の終端の所に“論理的”チェックポイントを置く。こ
のようにして、この追加の“論理”チェックポイント
は、回復において他のプロセスを巻き込む傾向を持つロ
ールバック伝播のドミノ効果を最小にする機能を持つ。
【0045】図2bに示されるように、プロセスPa
関連する最後の実チェックポイントCa、6 は、チェック
ポイントが取られたポイントの所でのプロセス状態の再
生を可能にする。加えて、このメッセージログとピース
ワイズ決定論的想定は、結果として、この状態再生の能
力のために、各受信されたメッセージによって開始され
た状態間隔の終端の所に“論理”チェックポイントL
a、1 、La、2 、及びLa、 3 を置く。こうして、プロセス
a は、図2bに示されるように、物理的にはチェック
ポイントCa、6 までロールバックするが、これは、“論
理的”には、最後の“論理”チェックポイントLa、3
でロールバックするのみであり、従って、メッセージM
4 の送信の取消を行なう必要はない。このために、プロ
セスPa のロールバックは、プロセスPb を巻き込む必
要はない。こうして、“物理的なロールバックの距離”
は個々のプロセスのロールバックの範囲を決定するが、
一方に、“論理的なロールバックの距離”は他のプロセ
スへのロールバック伝播の範囲、従って、回復に伴うプ
ロセスの数を制御する。
【0046】ピースワイズ決定論的想定は、ロールバッ
クの範囲を限定するために利用することができるが、こ
れは実行全体を通じて正当であるわけではない。例え
ば、幾つかの非決定論的事象は、実時間性の関数に依存
し、単に、記録及び再プレイすることはできない。例え
ば、ある特定のプロセスは、ある特定のメッセージを2
p.m. 以前である場合に限って送信する。従って、回復
が2 p.m. の直後に開始された場合は、このメッセージ
は再生されるべきでない。従って、単に、メッセージロ
グ内のメッセージの全てを再生することは、正確である
とはいえない。
【0047】従って、本発明の一面によると、後に詳細
に説明されるように、回復においてあるプロセスによっ
て再生されたメッセージが、ピースワイズ決定論的想定
を検証する目的で、初期の実行の際にメッセージログ内
にそのプロセスによって格納されたメッセージと比較さ
れる。例えば、図2bに示されるように、回復モードに
てメッセージM4 の再生が行なわれた後に、プロセスP
a によって再生されたメッセージが初期の処理の際にセ
ンダログファイル92内に格納されたメッセージと比較
される。これらメッセージが同一である場合は、ピース
ワイズ決定論的想定は正当であるものと見なされ、この
メッセージは、プロセスPb に再送信される必要はな
い。従って、プロセスPb は、このロールバックに参入
する必要はない。ただし、再生されたメッセージM4
センダログファイル92内に格納されたメッセージと同
一でない場合は、介入する非決定論的な事象が発生した
はずである。従って、プロセスPa は、その状態を、こ
の非決定論的事象が発生する前の状態である最後の実際
の或は論理的な事象、例えば、図2bに示される論理チ
ェックポイントLa、1 まで再生できるのみである。従っ
て、非決定論的事象を越える全ての論理チェックポイン
トLa、2 及びLa、3 は、利用できなくなり、破棄される
べきである。従って、プロセスPa は、メッセージM4
の送信を取り消す必要があり、プロセスPb は、メッセ
ージM4 の受信の前の最後の論理チェックポイント、つ
まり、論理チェックポイントLb、1 までロールバックし
なければならない。
【0048】本発明のもう一面によると、プログレッシ
ブ再試行回復アルゴリズム700の幾つかのステップ
は、後に詳細に説明されるように、一つ或はそれ以上の
アプリケーションプロセスのレシーバログファイル90
内の幾つかのメッセージを並べ替えることによってソフ
トウエア故障をバイパスすることを試みる。従って、正
しいことを保証するために、どのメッセージが並べ替え
でき、どのメッセージがそれらの元の順番で再プレイさ
れなければならないかを認識することが重要である。
【0049】図3に示されるように、回復に巻き込まれ
るプロセスの状態を回復ライン310の所まで回復する
ために、故障耐性計算システム5は、これらのプロセス
を回復ライン310の手前の各プロセスの最後の実チェ
ックポイントである再開ライン302から、各チェック
ポイントと関連するクリティカルメモリコピー88を回
復することによって再開することができる。好ましく
は、上に説明のように、中央回復コーディネータ75に
よって計算される回復ライン310は、最後の利用可能
な大域的に一貫性のあるセットの論理チェックポイント
或は実チェックポイントの所に位置される。
【0050】再開ライン302以前に処理されたメッセ
ージ、例えば、メッセージM1 は、古くなったメッセー
ジであると称され、回復には使用することができない。
再開ライン302と回復ライン310との間で受信及び
処理されたメッセージ、例えば、メッセージM2 とM3
は、それらのメッセージ内容と処理の順番の両方がレシ
ーバログファイル90内に登録されているはずである。
これらメッセージは、決定論的メッセージと称され、こ
れらは、決定論的再生のために、再開の後に、回復ライ
ン310に到達するためにそれらの元の順番に再プレイ
されるべきである。
【0051】過渡メッセージと称される回復ライン31
0の前に送信され、受信プロセスによって回復ライン3
10の後に処理されたメッセージ、例えば、メッセージ
4及びM5 に対しては、ログ内のメッセージ内容の情
報のみが正当である。過渡メッセージに対する処理の順
番は、ログされることもないし、また、不当でもない。
過渡メッセージは、実際には、まだ通信チャネル内を伝
わっている最中であり、従って、未知の伝送遅延のため
に、どのような順番で到達するか決定されてない。過渡
メッセージは、並べ替えすることができる唯一のメッセ
ージである。最後に、孤児メッセージと称される回復ラ
イン310以降に送信されたメッセージ、例えば、メッ
セージM6 及びM7 は、この回復ラインとの関係では、
送信と受信を取り消される。従って、孤児メッセージ
は、ロールバックの際に不当と判断され、受信プロセス
によって破棄されるべきであり、さもなければ、この回
復ラインは、一貫性を持たないものとなる。
【0052】故障耐性を実現するためのデータ構造 図4に示される故障耐性プロセスリスト25は、故障耐
性計算システム5によって監視されているプロセスに関
する情報を維持する。一つの好ましい実施例において
は、故障耐性プロセスリスト25と同一のコピーが各ノ
ードのウォッチドッグ15によって維持される。故障耐
性プロセスリスト25は、各々がある監視されているア
プリケーションプロセスと関連する複数のロウ、例え
ば、ロウ405、407、409、及び411を維持す
る。カラム420内にリストされる各アプリケーション
プロセスに対して、故障耐性プロセスリスト25は、カ
ラム425内に、このプロセスと通信するために使用さ
れるべきローカルノードのプロセス間通信(ICP)ポ
ートの指標を含む。
【0053】多重ノード環境の場合は、故障耐性プロセ
スリスト25は、好ましくは、一次ノードがアクティブ
である場合は各アプリケーションプロセスがその上で実
行されるべき一次ノードを示す指標を格納するカラム4
30、一次ノードが動作してない場合のアプリケーショ
ンプロセスに対するバックアップノードのリストを格納
するカラム435、並びに関連するアプリケーションプ
ロセスが実行している現在のノードの指標を格納するカ
ラム440を含む。
【0054】故障耐性プロセスリスト25は、さらに、
カラム445内に、クリティカルファイルの指標、例え
ば、各プロセスと関連するクリティカルメモリコピー8
8、並びにセンダ及びレシーバログファイル90、92
を含む。最後に、故障耐性プロセスリスト25は、オプ
ションとして、カラム448内にある時間限界を含む
が、これは、受動的エラー検出構成において、ウォッチ
ドッグ15がアプリケーションプロセスがハングされた
という結論を下す前にハートビートメッセージ間で待た
れるべき最大の時間を示す。
【0055】多重ノード環境の場合は、故障耐性計算シ
ステム5内の各ウォッチドッグ15は、好ましくは、図
4に示されるノードリスト32を維持する。これは、故
障耐性計算システム5内で現在アクティブな各ノードを
リストする。一つの好ましい実施例においては、ノード
リスト32内の各ノード、例えば、ノード10及び12
は、好ましくは、ノードリスト32内に列挙されている
次のノードを監視する。こうして、ノードリスト32内
のノードの順番はリング構成を決定する。あるノードが
サービスから外されると、この情報は、好ましくは、後
に詳細に説明される方法にて、各ノードの所に格納され
ているノードリスト32が適切に更新されるように各生
存ノードに同報通信される。
【0056】前述のように、あるアプリケーションプロ
セスによって受信或は送信された各メッセージは、好ま
しくは、それぞれ、レシーバ或はセンダログファイル9
0、92内に登録される。好ましくは、図5aに示され
るレシーバログファイル90が、、故障耐性計算システ
ム5によって監視される各プロセスに対して、関連する
プロセスによって受信された各メッセージに対する情報
を格納するために維持される。好ましくは、各メッセー
ジは、アプリケーションプロセスを受信した時点で、処
理される前に、レシーバログファイル90内に登録され
る。
【0057】レシーバログファイル90は、最後の成功
チェックポイント以降の関連するプロセスによって受信
された各メッセージと関連する複数のロウ、例えば、ロ
ウ502、504、506を維持する。カラム520内
にリストされる各受信されたメッセージに対して、レシ
ーバログファイル90は、カラム522内に、メッセー
ジサイズの指標を含み、カラム524内に、メッセージ
内容の指標を含む。カラム522及び524内の情報
は、回復モードにおいて、後に説明される方法によっ
て、ピースワイズ決定論的想定を検証するための比較の
ために使用される。ここで、カラム520内に示される
識別は、単に、例を挙げることのみを目的とすることに
注意すべきである。
【0058】加えて、レシーバログファイル90は、カ
ラム526内に、送信プロセスの識別の指標を含む。こ
れは、システムの初期化の際に送信プロセスのローカル
ノードのウォッチドッグ15によって割り当てること
も、或は中央回復コーディネータ75によって割り当て
ることもできる。レシーバログファイル90はさらに、
カラム528内に、送信プロセスのチェックポイント間
隔番号の指標を含み、カラム530内には、送信プロセ
スの論理チェックポイント番号の指標を含む。カラム5
28及び530内の情報は、回復モードにおいて、後に
説明される方法に従って、回復ラインを決定するための
ロールバック伝播のために使用される。後に説明される
ように、送信プロセスのチェックポイント間隔番号は、
関連するアプリケーションプロセスに対してチェックポ
イントが成功裡に実行される度に増分され、送信プロセ
ス論理チェックポイント番号は、送信プロセスによって
新たなメッセージが受信される度に増分される。
【0059】最後に、レシーバログファイル90は、オ
プションとして、カラム532内に、各メッセージと関
連する参照識別番号を含むこともできる。この参照識別
番号は、プログレッシブ再試行回復アルゴリズムにおい
て、同一の送信プロセスからのメッセージを並べ替えす
べきか決定するために使用される。一つの実施例におい
ては、同一の参照識別番号を持つ同一の送信プロセスか
らのレシーバログファイル90内のメッセージは、並べ
替えできない。一方、異なる参照識別番号を持つ同一の
送信プロセスからのメッセージは、並べ替えできる。
【0060】一つの好ましい実施例においては、好まし
くは、関連するプロセスがチェックポイントを成功裡に
実行する度に“ダミー”エントリがレシーバログファイ
ル90内に置かれる。このようにして、レシーバログフ
ァイル90内のメッセージが受信プロセスの適当なチェ
ックポイント間隔番号と関連付けられ、このために、最
後の実チェックポイント以降に受信されたメッセージを
プログレッシブ再試行回復アルゴリズム700の幾つか
のステップの最中に識別することが可能である。
【0061】同様にして、好ましくは、図5bに示され
るセンダログファイル92が故障耐性計算システム5に
よって監視される各プロセスに対して、関連するプロセ
スによって送信された各メッセージに対する情報を格納
するために維持される。センダログファイル92は、最
後の成功裡のチェックポイント以降の関連するプロセス
によって送信されたメッセージと各々が関連する複数の
ロウ、例えば、ロウ552、554、556、558を
含む。カラム570内にリストされる各送信されたメッ
セージに対して、センダログファイル92は、カラム5
72内に、メッセージサイズの指標を含み、カラム57
4内にメッセージ内容の指標を含む。カラム572及び
574内の情報は、後に説明される方法に従って、回復
モードにおいて、比較のために使用される。ここで、カ
ラム570内に示される識別は、単に、例を挙げること
のみを目的とすることに注意すべきである。
【0062】加えて、センダログファイル92は、カラ
ム576内に、受信プロセスのプロセス識別子の指標を
含むが、これは、システム初期化の際に受信プロセスの
ローカルノードのウォッチドッグ15によって割り当て
ることも、或は中央回復コーディネータ75によって割
り当てることもできる。センダログファイル92はさら
に、カラム578内に、送信プロセスの論理チェックポ
イント番号の指標を含む。前述のように、送信プロセス
の論理チェックポイント番号は、新たなメッセージが送
信プロセスによって受信される度に増分される。それぞ
れ図5aと5bに示されるレシーバ及びセンダログファ
イル90及び92には、図6aから6fとの関連で後に
説明されるプロセスP2 に対する情報が示される。
【0063】多重ノード動作 多重ノード環境の場合は、各ウォッチドッグ15は、好
ましくは、さらに、ノード故障を検出するために循環様
式にてもう一つのノードのウォッチドッグ15を監視す
る。多重ノード環境における故障耐性の議論に関して
は、本発明の譲受人に譲渡された、1992年9月30
日出願の『Apparatus and Method for Fault-Tolerant
Computing 』という名称の合衆国特許出願第07/95
4,549号;及びR.Bianchini、 Jr.及びR.Buskens に
よってProc. of 21st IEEE Conf. on Fault Tolerant C
omputing Systems(FTCS)、pp.222-29 (July 1991) に掲
載の論文『An Adaptive Distributed System-Level Dia
gnosis Algorithm and Its Implementation 』を参照さ
れたい。
【0064】一般的に述べて、多重ノード環境において
は、各ノード内のウォッチドッグ15は、各々のノード
上でローカル的に実行しているアプリケーションプロセ
スの状態、並びに、少なくとも一つの他のノードの状態
を監視する。ウォッチドッグ15は、図4bとの関連で
上で説明されたノードリスト32を含むが、これはウォ
ッチドッグ15がどの単一或は複数のノードを監視して
いるかを示すために使用される。好ましくは、ノードリ
スト32と同一のコピーが、各ノード内のウォッチドッ
グ15に提供される。第一のノードが故障すると、これ
は第一のノードを監視しているもう一つのノード上のウ
ォッチドッグ15によって検出される。監視しているウ
ォッチドッグ15は、生存ノードに、ノードリスト32
が故障したノードが失われたことを反映するようにノー
ドリスト32を修正すべきであることを示すメッセージ
を同報通信する。加えて、検出された故障の直前に故障
したノード上で実行されていた各プロセスに対する故障
耐性プロセスリスト25のカラム435内に示されるバ
ックアップノードは、各々のプロセスを再開することを
要求される。
【0065】ただし、あるノード内のウォッチドッグ1
5が他のノードからのアプリケーションプロセスを再開
するためには、監視しているウォッチドッグ15がその
プロセスの状態のコピーを持つことが必要である。この
ために、前述のように、各ノードは、ローカルノード上
で実行中のプロセスの状態のコピーを維持するための不
揮発性メモリ44を含む。こうして維持されるコピーと
しては、各プロセスのクリティカルメモリ88のチェッ
クポイントコピー、並びに、各ローカルプロセスに対す
るレシーバログファイル90及びセンダログファイル9
2が含まれる。加えて、多重ノード環境においては、プ
ロセス状態が一次ノードからその監視しているウォッチ
ドッグ15と関連するバックアップノードにコピーされ
る。一つの好ましい実施例においては、各々のアプリケ
ーションプロセスに対するクリティカルメモリコピー8
8或はログファイル90、92内に重大な変化が発生す
る度に、コピーが監視されているノード内のウォッチド
ッグ15によって作成され、監視しているウォッチドッ
グ15に送信される。
【0066】上の説明から明らかなように、各ウォッチ
ドッグ15は、任意の時間において、故障耐性計算シス
テム5内のどこで各監視されているアプリケーションプ
ロセスがランしているかを知っている必要がある。この
情報は、好ましくは、故障耐性プロセスリスト25のカ
ラム440内に含まれるが、各ウォッチドッグ15は、
この情報の同一のコピーを持つ。故障耐性プロセスリス
ト25の一貫性は、各ウォッチドッグ15が、それが監
視されるプロセスを開始或は再開したときに、他の全て
のウォッチドッグ15に一つのメッセージを同報通信
し、一方、各ウォッチドッグ15が、このメッセージに
応答して、そのメッセージによって要求されるように故
障耐性プロセスリスト25を更新することによって維持
される。前に故障していたノードがサービスに戻ると、
このノード内のウォッチドッグ15は、もう一つのノー
ド内のウォッチドッグ15からノードリスト32のコピ
ー及び故障耐性プロセスリスト25を得る。この故障耐
性プロセスリスト25は、図4aとの関連で上に述べた
ように、この前に故障していたノードに対してローカル
であるアプリケーションプロセスを現在実行しているノ
ード、及びこれらプロセスを再開するために必要なロー
カルプロセスの状態を含む状態ファイルの位置を示す。
ウォッチドッグ15は、現在それらプロセスを実行して
いるノードからこれらファイルのコピーを得て、この状
態コピーを使用してこれらプロセスを再開する。上に述
べたように、ウォッチドッグ15があるプロセスを再開
すると、これは、故障耐性計算システム5内の他のウォ
ッチドッグ15にメッセージを送信し、あるウォッチド
ッグ15がその再開されたプロセスを実行している場合
は、このウォッチドッグ15は、そのプロセスの実行を
停止し、その故障耐性プロセスリスト25を、そのプロ
セスが現在適切な一次ノード上で実行していることを示
すように修正する。他の全てのウォッチドッグ15は、
単に、それらの故障耐性プロセスリスト25を上に説明
された方法で修正する。
【0067】故障耐性ライブラリファンクション 本発明の一面によると、あるアプリケーションプロセス
は、故障耐性ライブラリ82からの適当なファンクショ
ンをそのアプリケーションプロセスに対するコード内に
挿入することによって故障耐性にされる。前に述べたよ
うに、故障耐性ライブラリ82は、好ましくは、ハート
ビートファンクションを含む。これは、あるアプリケー
ションプロセスによって呼び出されると、ウォッチドッ
グ15に、それと関連するプロセスがまだアクティブで
あることを示すハートビートメッセージを所定の間隔で
送信する。ウォッチドッグ15が所定の間隔の終了まで
にそのアプリケーションプロセスから次の信号を受信し
ない場合は、ウォッチドッグ15は、そのアプリケーシ
ョンプロセスがハング或はクラッシュしたものと見な
す。
【0068】加えて、故障耐性ライブラリ82は、クリ
ティカルメモリファンクションを含む。これは、ユーザ
がアプリケーションプロセス内のどのデータがクリティ
カルデータであるかを選択的に指定することを可能に
し、指定されたデータは、そのアプリケーションプロセ
スによってチェックポイントファンクションが実行され
る度に不揮発性メモリ44のある領域内にコピーされ
る。
【0069】こうして、あるアプリケーションプロセス
によるチェックポイントファンクションへの呼び出しが
ある度に、クリティカルデータが、好ましくは、安定な
メモリデバイス上に格納される。加えて、チェックポイ
ントが成功裡に実行される度に、好ましくは、関連する
アプリケーションプロセスの、二つの連続するチェック
ポイント間の間隔であるチェックポイント間隔番号が増
分される。チェックポイントファンクションが成功裡に
遂行されると、チェックポイントファイル名、プロセス
識別子及び現在のチェックポイント間隔番号を含むメッ
セージがウォッチドッグ15に送られる。この方法によ
って、ウォッチドッグ15は、この情報を使用して、チ
ェックポイントファイルを一つ或はそれ以上のバックア
ップノード上に複製し、また、大域チェックポイントコ
ーディネータ77に調節されたチェックポイント環境内
のこの新たなチェックポイントについて通知する。通知
を受けると、大域チェックポイントコーディネータ77
は、好ましくは、残りの監視されているプロセスに大域
チェックポイントを示す。
【0070】加えて、故障耐性ライブラリ82は、好ま
しくは、回復ファンクションを含む。これは、アプリケ
ーションプロセスが、後に詳細に説明されるように、回
復モードにおいて、クリティカルメモリコピー88から
チェックポイントの所のデータを回復することを可能に
する。
【0071】故障耐性ライブラリ82は、好ましくは、
さらに、以降ftwrite と称される故障耐性書込みファン
クションを含む。これは、各出力メッセージをセンダロ
グファイル92内に、そのメッセージがアプリケーショ
ンプロセスによって送信される前に登録する。多重ノー
ド環境内においては、この出力データが複製され、バッ
クアップマシン上のウォッチドッグ15によって登録さ
れる。あるアプリケーションプロセスが通常のモードに
あるときは、ftwiteファンクションは、他のプロセスに
メッセージを送信し、各送信されたメッセージに対し
て、センダログファイル内にその情報を加える。
【0072】ftwrite ファンクションによって送信され
る各メッセージは、好ましくは、メッセージ識別子、送
信プロセスのプロセス識別子、送信プロセスのチェック
ポイント間隔番号と論理チェックポイント番号、及びオ
プションとしての参照識別番号を含む。チェックポイン
ト間隔番号は調節されたチェックポイントを実現するた
めに使用される。前に述べたように、参照識別番号は同
一の送信プロセスからのメッセージが並べ替えできるか
否かを示すために使用される。
【0073】ただし、回復状態においては、登録された
メッセージが処理された後に、ftwrite ファンクション
が、以下に説明される方法にて、ピースワイズ決定論的
想定を検証する目的で、各新たに生成されたメッセージ
をセンダログファイル92内の対応するメッセージと比
較するために実行される。回復の際に生成されたメッセ
ージが前の実行の際にセンダログファイル92内に格納
されたメッセージと同一である場合は、メッセージは再
送される必要はない。ただし、メッセージが同一でない
場合は、非決定論的事象が発生しており、後に説明され
る方法に従って、回復の範囲が広げられる。
【0074】故障耐性ライブラリ82は、好ましくは、
さらに、以降ftreadと称される故障耐性読出しファンク
ションを含む。これは、入力メッセージをレシーバログ
ファイル90内に、これらが受信アプリケーションプロ
セスによって処理される前に登録する。多重ノード環境
においては、入力データが複製され、バックアップマシ
ン上のウォッチドッグ15によって登録される。あるア
プリケーションプロセスが通常のモードにある場合は、
ftreadファンクションは、IPCチャネルからデータを
読出し、受信されたメッセージをレシーバログファイル
90内に登録する。
【0075】ただし、回復状態においては、後に説明さ
れる方法によって、入力データがレシーバログファイル
90から回復ライン310の所まで読出され、その後、
任意のデータが正規の入力チャネルから読出される。一
つの好ましい実施例においては、ftreadファンクション
は、各受信されたメッセージと関連する送信プロセスの
チェックポイント間隔番号をチェックし、送信プロセス
のチェックポイント間隔番号が受信プロセスの現在のチ
ェックポイント間隔番号よりも大きな場合は関連する受
信アプリケーションプロセスのチェックポイントを起動
し、これによって、大域的に一貫性のあるチェックポイ
ントを確保する。加えて、ftreadファンクションが中央
回復コーディネータ75からチェックポイント制御メッ
セージを受信したときも、ftreadファンクションは、そ
のアプリケーションプロセスのチェックポイントを起動
する。
【0076】図6aから6fは、複数の平行アプリケー
ションプロセスに対する通信パターンを図解し、これら
プロセスが図8から11との関連で後に説明されるプロ
グレッシブ再試行回復アルゴリズム700の様々なステ
ップによってどのような効果を受けるかを示す。以下で
は、図6aから6fを参照し、プログレッシブ再試行回
復アルゴリズム700の各ステップを図解しながら、プ
ログレッシブ再試行回復アルゴリズム700について解
説される。
【0077】図6aから6fは、以下の約束を使用し
て、様々な回復概念を図解する。各プロセスと関連する
加算記号“+”は、各プロセスに対する最後の実チェッ
クポイントの時間上の位置を示す。四角のボックス内の
加算記号は、各プロセスに対する論理チェックポイント
の時間上の位置を示す。加算記号のない四角のボックス
は、最後の正当な論理チェックポイントを示し、これ
は、各プロセスに対する回復ラインを形成する。最後に
最後の実エッチングポイントを示す加算記号が円の中に
位置される場合は、これは、関連するプロセスがプログ
レッシブ再試行回復の現在のステップに巻き込まれてい
ることを示す指標である。
【0078】プログレッシブ再試行回復アルゴリズム 本発明の原理を具現するプログレッシブ再試行回復アル
ゴリズムは、図7に示されるように、ステップ701か
ら開始される。ステップ705において、ウォッチドッ
グ15のエラー検出モニタ20が監視されているアプリ
ケーションプロセス内に故障を発見するまで、テストが
反復的に遂行される。ステップ705において故障が検
出されると、ステップ710において、現在の検出され
た故障がこのプロセスに対して以前に検出された故障と
同一であるか決定するためのテストが遂行される。一つ
の実施例においては、同一のプロセスに対する前の故障
からの所定の時間しきい値内に検出された故障は同一の
故障であると見なされる。ステップ710において、現
在検出された故障がこのプロセスに対する前に検出され
た故障と同一の故障でないことが発見された場合は、存
在する場合、これがこの故障を修正するための最初の試
みであり、プログレッシブ再試行方法が、この故障プロ
セスの回復を試みるためにステップ1から開始される。
【0079】このために、プログレッシブ再試行回復ア
ルゴリズム700のどのステップが現在実行されるべき
かを制御するカウンタ変数Nがステップ715におい
て、プログレッシブ再試行回復アルゴリズム700の最
初のステップが試みられるべきであることを示すため
に、1にセットされる。ただし、ステップ710におい
て、現在発見された故障がこのプロセスに対する前に検
出された故障と同一の故障であることが発見された場合
は、この故障を修正する前の試みが不成功であったこと
を意味する。従って、プログレッシブ再試行回復アルゴ
リズム700の範囲が故障プロセスの回復を試みるため
に増大されなければならない。このために、ステップ7
20において、プログレッシブ再試行回復アルゴリズム
700の次のステップが試みられるべきであることを示
すために1だけ増分される。
【0080】ステップ725において、カウンタ値Nの
現在の値が1であるかを決定するためのテストが遂行さ
れる。ステップ725において、カウンタ変数Nの値が
1であることが決定された場合は、ステップ730にお
いて、最初の故障プロセスと関連するレシーバログファ
イル90のバックアップコピーが作成される。プログレ
ッシブ再試行回復アルゴリズム700の各ステップが試
みられる度に、レシーバログファイル90内の情報が破
棄される。好都合なことに、レシーバログファイル90
のバックアップコピーは、必要なときに、この情報にア
クセスすることを可能にする。
【0081】図8との関連で後に説明されるプログレッ
シブ再試行方法のステップ1であるレシーバ再プレイサ
ブルーチン800がステップ735において実行され
る。その後、プログラム制御はステップ795に進み、
ここでプログレッシブ再試行回復アルゴリズム700は
退出する。故障プロセスは、すると、前に検出されたソ
フトウエアエラーのバイパスを試みるために通常のプロ
グラム実行を再開する。第二の実行において故障がバイ
パスされない場合は、次の故障が検出された時点でプロ
グレッシブ再試行回復アルゴリズム700が再開され、
ステップ2の再試行に進む。
【0082】ただし、ステップ725において、カウン
タ変数Nの値が1でないことが決定された場合は、ステ
ップ740において、カウンタ変数Nの値が2に等しい
か決定するためのテストが遂行される。ステップ740
において、カウンタ変数Nの値が2であることが決定さ
れた場合は、故障の可能性のあるソースは、別のプロセ
スから受信されたメッセージである。このために、好ま
しくは、ステップ745において、オフラインデバッグ
のために、チェックポイントファイルのコピーと、セン
ダ及びレシーバログファイル90と92とがトレースフ
ァイル内にコピーされる。
【0083】次に、図9との関連で後に説明されるプロ
グレッシブ再試行法のステップ2であるレシーバ並べ替
えサブルーチン900がステップ750において実行さ
れる。その後、プログラム制御は、ステップ795に進
み、ここでプログレッシブ再試行回復アルゴリズム70
0は退出する。次に、監視されているプロセスの全てが
通常のプログラム実行に戻り、前に検出されたソフトウ
エア故障のバイパスを試みる。故障がバイパスされない
場合、プログレッシブ再試行回復アルゴリズム700が
次に故障が検出されたとき再開され、ステップ3の再試
行へと進む。
【0084】ただし、ステップ740において、カウン
タ変数Nの値が2に等しくないことが決定された場合
は、ステップ755において、カウンタ変数Nの値が3
に等しいか決定するためのテストが遂行される。ステッ
プ755において、カウンタ変数Nの値が3に等しいこ
とが決定された場合は、次に、図10との関連で後に説
明されるプログレッシブ再試行法のステップ3であるセ
ンダ再プレイサブルーチン1000がステップ760に
おいて実行される。その後、プログラム制御はステップ
795に進み、ここでプログレッシブ再試行回復アルゴ
リズム700は退出する。全ての監視下のプロセスが通
常のプログラム実行に戻り、故障のバイパスを試みる。
故障がバイパスされない場合は、プログレッシブ再試行
回復アルゴリズム700が次の故障が検出された時点で
再開され、ステップ4の再試行に進む。
【0085】ただし、ステップ755において、カウン
タ変数Nの値が3に等しくないことが決定された場合
は、ステップ765において、カウンタ変数Nの値が4
に等しいか決定するためのテストが遂行される。ステッ
プ765において、カウンタ変数Nが4に等しいことが
決定された場合は、次に、図11との関連で後に説明さ
れるプログレッシブ再試行法のステップ4であるセンダ
並べ替えサブルーチン1100がステップ770におい
て実行される。その後、プログラム制御はステップ79
5に進み、ここで、プログレッシブ再試行回復アルゴリ
ズム700は、次の故障が検出されるまで退出する。
【0086】ただし、ステップ765において、カウン
タ変数Nの値が4に等しくないことが決定された場合
は、ステップ775において、カウンタ変数Nの値が5
に等しいか決定するためのテストが遂行される。ステッ
プ775においてカウンタ変数Nの値が5に等しいこと
が決定された場合は、次に、図12との関連で後に説明
されるプログレッシブ再試行法のステップ5である広範
囲ロールバック再試行サブルーチン1200がステップ
780において実行される。その後、プログラム制御は
ステップ795に進み、ここでプログレッシブ再試行回
復アルゴリズム700は、次の故障が検出されるまで退
出する。
【0087】ただし、ステップ775においてカウンタ
変数Nの値が5に等しくないことが決定された場合は、
ステップ785において、カウンタ変数Nの値が5より
大きいか決定するためのテストが遂行される。ステップ
785においてカウンタ変数Nの値が5よりも大きいこ
とが決定された場合は、プログレッシブ再試行回復アル
ゴリズム700は、故障プロセスを回復できなかったこ
とを意味する。従って、システムは、ステップ790に
おいて、完全な再初期化と共に再開されなければならな
い。別の方法として、ステップ790において、プログ
レッシブ再試行回復アルゴリズム700が故障プロセス
を成功裡に回復できなかったことを示すエラー或は警告
メッセージを生成することもできる。その後、プログラ
ム制御はステップ795に進み、ここで、プログレッシ
ブ再試行回復アルゴリズム700は、次の故障が検出さ
れるまで退出する。
【0088】ステップ1−−レシーバ再プレイ 前述のように、プログレッシブ再試行回復アルゴリズム
700は、プログレッシブ再試行法のステップ1におい
てレシーバ再プレイサブルーチン800を実行する。レ
シーバ再プレイサブルーチン800は、図8に示される
ように、ステップ801から開始される。レシーバ再プ
レイサブルーチン(ステップ1)800は、故障プロセ
スを最後のチェックポイントまで回復し、次に、故障プ
ロセスのレシーバログファイル90内の最後の実チェッ
クポイント以降に受信されたメッセージを再プレイする
ことによって、故障をバイパスすることを試みる。一つ
の好ましい実施例においては、これは、ステップ820
において、故障プロセスに対して図14aと14bとの
関連で後に説明される決定論的再プレイサブルーチン1
400を実行することによって実現される。
【0089】前述のように、好ましくは、個々のメッセ
ージが処理の前に登録される。従って、検出された故障
の前に故障プロセスによって送信或は受信された各メッ
セージは、故障プロセスのレシーバログファイル90及
びセンダログファイル92内に登録されている。従っ
て、決定論的再プレイサブルーチン1400を使用し
て、登録されているメッセージを再プレイすることによ
って、故障プロセスは、その状態をそれがエラーを検出
したポイントまで再生することができる。
【0090】図6aに示されるように、ウォッチドッグ
15のエラー検出モニタ20によって、プロセスP2
対して“F”とマークされているポイントにおいて故障
が検出されると、ウォッチドッグ15の再開サブルーチ
ン30は、プログレッシブ再試行回復アルゴリズム70
0を始動して故障をバスパスすることを試みる。ステッ
プ1の再試行において、決定論的再試行サブルーチン1
400は、プロセスP2 のレシーバログファイル90内
の各メッセージを再プレイし、環境多様性の概念に基づ
いて故障のバイパスを試みる。つまり、幾つかのケース
においては、過渡的な故障が幾つかの環境要因、例え
ば、互いに排他的な衝突、資源が利用できない、予期せ
ぬ信号その他の理由によって発生するが、これらは、回
復が実行さる時点ではもはや存在せず、ステップ1の再
試行が成功する可能性がある。
【0091】後に説明されるように、本発明の一面によ
ると、ピースワイズ決定論的想定の妥当性が決定論的再
プレイサブルーチン1400によって、決定論的再プレ
イの際にプロセスP2 によって生成された各メッセージ
を評価することによって検証される。回復の際に再生さ
れたメッセージが初期の処理の際にセンダログファイル
92内に格納されたメッセージと等しくない場合は、非
決定論的事象が発生したものと判断される。
【0092】例えば、図6bに示されるように、決定論
的再プレイサブルーチン1400は、P2 のメッセージ
ログ内の各メッセージをメッセージMf に至るまで再プ
レイする。メッセージMf が再生された時点で、決定論
的再プレイサブルーチン1400は、以下に説明される
方法にて、非決定論的事象eが発生したことを決定する
が、この結果として、生成されたメッセージMf の以前
のバージョンはもはや正当でないとされる。こうして、
プロセスP2 は、その状態を非決定論的事象eの直前の
論理チェックポイントまで再生できるのみであり、非決
定論的事象を越える全ての論理チェックポイントは利用
できず、破棄されなければならない。従って、プロセス
2 は、メッセージMf 、並びにメッセージMg の送信
を取り消し、論理チェックポイントL2、2 までロールバ
ックしなければならず、従って、図6b内の新たな回復
ライン10によって示されるように、回復において、プ
ロセスP1 を巻き込むこととなる。プロセスP1 は、送
信が取り消されたメッセージMg 及びMf の前の最後の
論理チェックポイント、つまり、論理チェックポイント
1、3 までロールバックしなければならない。注目すべ
き点として、このように前の実行から離れることによっ
て、過渡的な故障を起こすソフトウエア故障をバイパス
する追加の機会が提供される。
【0093】ステップ820(図8)における決定論的
再プレイサブルーチン1400の実行に続いて、プログ
ラム制御は、ステップ840において、プログレッシブ
再試行回復アルゴリズム700に戻り、故障プロセスに
対する通常の実行が再開される。前に検出された故障が
バイパスされた場合は、プログラム制御は継続される。
ただし、故障がバイパスされなかった場合は、エラー検
出モニタ20が故障を再び検出し、プログレッシブ再試
行回復アルゴリズム700をステップ2の再プレイから
再開する。
【0094】ステップ2−−レシーバ並べ替え 前述のように、プログレッシブ再試行回復アルゴリズム
700は、プログレッシブ再試行法のステップ2におい
てレシーバ並べ替えサブルーチン900を実行する。レ
シーバ並べ替えサブルーチン900は、図9に示される
ように、ステップ901から開始される。
【0095】ステップ1の再試行が不成功であった場合
は、故障の原因としては、他のプロセスから受信された
メッセージによる可能性が高い。ロールバックの範囲を
最小にするために、最初にステップ2の再試行が、実際
に送信プロセスを巻き込むことなしに、受信されたメッ
セージに関する他の可能なシナリオをローカル的にシミ
ュレートするために試みられる。
【0096】原則として、入り通信チャネルの伝送遅延
は予測不能である。従って、異なるプロセスから受信さ
れたメッセージは、通常は、特定の到達順序を持つもと
の想定することはできない。従って、故障プロセスによ
るメッセージの並べ替え動作が異なるメッセージの到達
順序をシミュレートするために使用される。ただし、同
一送信プロセスからのメッセージは、同一の順序での処
理を要求することに注意する。
【0097】後に説明されるように、故障プロセスは、
故障プロセスのレシーバログファイル90内にリストさ
れている全ての受信メッセージの並べ替えを試みる。レ
シーバ並べ替えサブルーチン(ステップ2)900は、
最初に、ステップ910において、故障プロセスのレシ
ーバログファイル90内の故障プロセスによって最後の
実チェックポイント以降に受信された各メッセージに対
する処理順番情報を破棄する。これは、故障プロセスに
対する最初に受信されたメッセージ以降の全ての論理チ
ェックポイントを不当にする機能を果たす。
【0098】その後、故障プロセスと関連するウォッチ
ドッグ15が、ステップ920において、ステップ2の
回復のために回復ライン310を計算し直すリクエスト
を故障プロセスの指標と共に中央回復コーディネータ7
5に送信する。中央回復コーディネータ75がいかにし
てこのリクエストを処理し、回復ラインを再計算するか
は、図15aと15bとの関連で、後に説明される。
【0099】中央回復コーディネータ75は、回復ライ
ンの計算を終えると、監視下の各アプリケーションプロ
セスに再計算された回復ライン情報を同報通信する。再
計算された回復ラインを受信すると、監視下の各プロセ
スは、それぞれプロセスP0及びPN に対して、図9の
処理ブランチ930及び940に示されるように、実質
的に平行的に回復ラインを処理し、適当な応答を決定す
る。プロセスP0 は、ステップ950において、中央回
復コーディネータ75から同報通信された回復ライン3
10を受信する。その後、ステップ960において、プ
ロセスP0 に対して、図13との関連で後に説明される
プロセスメッセージ登録サブルーチン1300が実行さ
れる。
【0100】処理順番情報がレシーバログファイル90
内の全てのメッセージに対して破棄されているために、
最初に受信されたメッセージ以降の故障プロセスの論理
チェックポイントはもはや利用することはできない。従
って、故障プロセスによって送信された全てのメッセー
ジは送信を取り消されなければならず、送信を取り消さ
れたメッセージを受信したプロセスは全て、ステップ2
の再試行に参入しなければならない。
【0101】図6cに示されるように、ウォッチドッグ
15のエラー検出モニタ20によって、“F”とマーク
されたポイントにおいて、プロセスP2 に対して故障が
再び検出されると、ウォッチドッグ15の再開サブシス
テム30は、再度プログレッシブ再試行回復アルゴリズ
ム700を開始し、故障をバイパスすることを試みる。
故障が前に検出された故障と同一である場合は、プログ
レッシブ再試行回復アルゴリズム700は、ステップ2
の再試行を開始する。故障プロセスP2 のそれが最初に
受信したメッセージ以降の論理チェックポイントはもは
や利用できないために、図6cに示されるような回復ラ
インが中央回復コーディネータ75によって送信され
る。この回復は、メッセージMg とMf の送信が取り消
されたために、プロセスP1 を巻き込む。後に説明され
るように、プロセスP2 及びP1 のメッセージログ内の
メッセージが、図13との関連で後に説明されるよう
に、プロセスメッセージログサブルーチン1300によ
って処理され、ソフトウエア故障をバイパスすることが
試みられる。
【0102】図9に示されるように、プロセスPN は、
ステップ970と980において、同報通信された回復
ライン310を受信及び処理するが、これは、プロセス
Nによって、プロセスP0 及び他の全ての監視下のプ
ロセスの処理と実質的に平行して処理される。監視下の
全てのプロセスが再計算された回復ライン310の処理
を完了すると、プログラム制御は、ステップ990にお
いて、プログレッシブ再試行回復アルゴリズム700に
戻り、通常の実行が、各監視下のプロセスP0 からPN
に対して再開される。前に検出された故障がバイパスさ
れた場合は、プログラム制御は継続される。故障がバイ
パスされなかった場合は、エラー検出モニタ20が故障
を再び検出し、プログレッシブ再試行回復アルゴリズム
700が今回はステップ3を試みて再開される。
【0103】ステップ3−−センダ再プレイ 前述のように、プログレッシブ再試行回復アルゴリズム
700は、プログレッシブ再試行法のステップ3におい
て、センダ再プレイサブルーチン1000を実行する。
センダ再プレイサブルーチン(ステップ3)1000は
図10に示されるように、ステップ1001から開始さ
れる。センダ再プレイサブルーチン(ステップ3)10
00は、最初に、ステップ1010において、故障プロ
セスのレシーバログファイル90内のその故障プロセス
によって最後の実チェックポイント以降に受信された全
てのメッセージを破棄する。後に説明されるように、こ
れら破棄されたメッセージの送信プロセスは、次に、こ
れらメッセージを故障プロセスに再送し、故障プロセス
内の故障をバイパスすることを試みる。
【0104】故障プロセスと関連するウォッチドッグ1
5は、次に、ステップ1020において、ステップ3の
回復に対する回復ライン310を再計算するリクエスト
を故障プロセスの指標と共に中央回復コーディネータ7
5に送信する。中央回復コーディネータ75がどのよう
にこのリクエストを処理し、回復ラインを再計算するか
については、図15aと15bとの関連で後に説明され
る。中央回復コーディネータ75は、回復ラインの再計
算を完了すると、再計算された回復ライン情報を各監視
されているアプリケーションプロセスに同報通信する。
再計算された回復ラインを受信すると、各監視されてい
るプロセスは、それぞれ、プロセスP0 及びPN に対し
て、図10内の処理ブランチ1030と1040によっ
て示されるように、実質的に平行して回復ラインを処理
し、適当な応答を決定する。
【0105】プロセスP0 は、ステップ1050におい
て、中央回復コーディネータ75から同報通信された回
復ライン310を受信する。その後、ステップ1060
において、プロセスP0 に対して、図13との関連で後
に説明されるプロセスメッセージログサブルーチン13
00が実行される。破棄されたメッセージを送信したプ
ロセスは、プロセスメッセージログサブルーチン130
0を使用して、これらメッセージを故障されたプロセス
によって受信されるように、可能な異なる順番にて送信
することによって、故障をバイパスすることを試みる。
【0106】図6dに示されるように、ウォッチドッグ
15のエラー検出モニタ20によって、“F”とマーク
されたポイントにおいて、プロセスP2 に対して故障が
検出されると、ウォッチドッグ15の再開サブシステム
30は、プログレッシブ再試行回復アルゴリズム700
を開始して、故障をバイパスすることを試みる。ステッ
プ3において、プロセスメッセージログサブルーチン1
300は、破棄されたメッセージを送信したプロセス
に、これらメッセージを再送するように指令する。
【0107】後に述べられるように、プロセスメッセー
ジログサブルーチン1300は、決定論的メッセージを
再プレイするために決定論的再プレイサブルーチン14
00を実行する。決定論的再プレイサブルーチン140
0は、ピースワイズ決定論的想定が妥当であるか検証す
るために、決定論的再プレイの際にプロセスP2 によっ
て生成された各メッセージを評価する。回復の際に生成
されたメッセージが初期の処理の際にセンダログファイ
ル92内に格納されたメッセージと等しくない場合は、
非決定論的な事象が発生したものと見なされる。
【0108】例えば、図6eに示されるように、決定論
的再プレイサブルーチン1400は、P3 のメッセージ
ログ内の各メッセージをメッセージMa に至るまで再プ
レイする。メッセージMa が再生された時点で、決定論
的再プレイサブルーチン1400は、後に説明される方
法に従って、非決定論的な事象eが発生したことを決定
するが、この結果として、生成されたMa の以前のバー
ジョンが不当にされる。このため、プロセスP3 は、そ
の状態を非決定論的な事象eの直前の論理チェックポイ
ントL3、1 までしか再生することができず、非決定論的
な事象を越える全ての論理的チェックポイントは、利用
できず、破棄されなければならない。従って、プロセス
3 は、論理チェックポイントL3、1 までロールバック
し、メッセージMa 、Md 及びMs の送信を取り消す必
要があり、従って、図6e内の新たな回復ライン310
によって示されるように、この回復には、プロセスP4
が巻き込まれる。
【0109】図10に示されるように、プロセスPN
は、ステップ1070及び1080において、同報通信
された回復ライン310を受信及び処理するが、これら
はプロセスPN によって、プロセスP0 及び他の全ての
監視されているプロセスの処理と実質的に平行して処理
される。監視下のプロセスの全てが再計算された回復ラ
イン310の処理を終了した後に、プログラム制御は、
ステップ1090において、プログレッシブ再試行回復
アルゴリズム700に戻り、通常の実行が各監視下のプ
ロセスP0 からPN に対して再開される。前に検出され
た故障がバイパスされた場合は、プログラム制御は継続
される。ただし、そうでない場合は、エラー検出モニタ
20が故障を再び検出し、プログレッシブ再試行回復ア
ルゴリズム700を今回はステップ4を試みるために再
開する。
【0110】ステップ4−−センダ並べ替え 前述のように、プログレッシブ再試行回復アルゴリズム
700は、プログレッシブ再試行法のステップ4におい
てセンダ並べ替えサブルーチン1100を実行する。セ
ンダ並べ替えサブルーチン(ステップ4)1100は、
図11に示されるように、ステップ1101から開始さ
れる。ステップ4の再試行において、プログレッシブ再
試行回復アルゴリズム700は、回復の範囲及び非決定
論的性質の程度を増大するが、これは、回復において故
障プロセスにメッセージを送信したプロセスを巻き込
み、これらに、それらのレシーバログファイル90内の
過渡メッセージをこれらを再処理する前に並べ替えさせ
ることによって行なわれる。並べ替えられた過渡メッセ
ージの再処理の際に、故障プロセスに以前にメッセージ
を送信したプロセスが、故障プロセスに再びメッセージ
を送信する。
【0111】故障プロセスと関連するウォッチドッグ1
5は、最初に、ステップ1110において、最後の実チ
ェックポイント以降に故障プロセスにメッセージを送信
した全てのプロセスに関して、レシーバログファイル9
0内の、故障プロセスに送信された最初のメッセージよ
り前に位置する論理チェックポイントより後ろの各メッ
セージに対して、処理順番情報を破棄する。これは、故
障プロセスにメッセージを送信した全てのプロセスに関
して、最後の実チェックポイント以降の、故障プロセス
に送信された最初のメッセージより後の全ての論理チェ
ックポイントを無効にする機能を持つ。
【0112】その後、故障プロセスと関連するウォッチ
ドッグ15は、ステップ1120において、ステップ4
の回復のための回復ライン310を再計算するリクエス
トを故障プロセスの指標と共に中央回復コーディネータ
75に送信する。中央回復コーディネータ75がどのよ
うにこのリクエストを処理し、回復ラインを再計算する
かについては、後に、図15aと15bとの関連で説明
される。一般的にいって、ステップ4の回復において、
中央回復コーディネータ75は、故障プロセスにメッセ
ージを送信した各プロセスに対して、故障プロセスに送
信された最初のメッセージより後ろの全ての論理チェッ
クポイントを破棄する。中央回復コーディネータ75が
回復ラインの再計算を終了すると、これは、再計算され
た回復ラインの情報を各監視下のアプリケーションプロ
セスに同報通信する。再計算された回復ラインを受信す
ると、各監視下のプロセスは、回復ラインを実質的に平
行して処理し、図11内の処理ブランチ1130及び1
140によって示されるように、それぞれ、プロセスP
0 及びPN に対して、適当な応答を決定する。
【0113】プロセスP0 は、ステップ1150におい
て、中央回復コーディネータ75から同報通信された回
復ライン310を受信する。その後、図13との関連で
後に説明されるプロセスメッセージログサブルーチン1
300がステップ1160においてプロセスP0 に対し
て実行される。
【0114】図6fに示されるように、故障プロセスP
にメッセージを送信したプロセスに関して、故障プ
ロセスに送信された最初のメッセージよりも後ろの全て
の論理チェックポイントが破棄される。こうして、プロ
セスP は、論理チェックポイントL1、1 まで論理
的にロールバックし、P は論理チェックポイントL
3、1 まで論理的にロールバックすることが要求され
る。プロセスP が、メッセージM の送信を取り消
すことを要求するために、プロセスP がこのロール
バックに参入することを要求される。
【0115】図11に示されるように、プロセスPN
は、ステップ1170及び1180において、同報通信
された回復ライン310を受信及び処理するが、これは
プロセスPN によって、プロセスP0 及び他の全ての監
視下のプロセスの処理と実質的に平行して処理される。
監視下のプロセスの全てが再計算された回復ライン31
0の処理を終了すると、プログラム制御は、ステップ1
190において、プログレッシブ再試行回復アルゴリズ
ム700に戻り、各プロセスP0 からPN に対して通常
の実行を再開する。前に検出された故障がバイパスされ
た場合は、プログラム制御は、継続される。バイパスさ
れない場合は、エラー検出モニタ20は、再び故障を検
出し、プログレッシブ再試行回復アルゴリズム700を
今回はステップ5を試みて再開する。
【0116】ステップ5−−広範囲ロールバック プログレッシブ再試行回復アルゴリズム700のステッ
プ1から4において遂行された全てのローカル化された
再試行が一つ或はそれ以上のソフトウエア故障をバイパ
スすることに失敗した場合は、プログレッシブ再試行回
復アルゴリズム700は、広範囲ロールバックを実現す
るために、大域的に一貫性のあるセットのチェックポイ
ントを利用する。前述のように、プログレッシブ再試行
回復アルゴリズム700は、プログレッシブ再試行法の
ステップ5において広範囲ロールバック再試行サブルー
チン1200を実行する。広範囲ロールバック再試行サ
ブルーチン(ステップ5)1200は、図12に示され
るように、ステップ1201から開始される。故障プロ
セスと関連するウォッチドッグ15は、ステップ122
0において、ステップ5の回復のための回復ライン31
0を再計算するリクエストを中央回復コーディネータ7
5に送信する。中央回復コーディネータ75がこのリク
エストを処理し、回復ラインを再計算する方法について
は、後に図15aと15bとの関連で説明される。
【0117】中央回復コーディネータ75が回復ライン
の再計算を終えると、これは各監視下のアプリケーショ
ンプロセスに再計算された回復ライン情報について同報
通信する。再計算された回復ラインを受信すると、各監
視下のプロセスは、それぞれ、プロセスP0 及びPN
対して、図12の処理ブランチ1230及び1240に
よって示されるように、回復ラインを実質的に平行して
処理し、適当な応答を決定する。プロセスP0 は、ステ
ップ1250において、中央回復コーディネータ75か
ら同報通信された回復ライン310を受信する。その
後、後に図13との関連で説明されるプロセスメッセー
ジログサブルーチン1300がステップ1260におい
てプロセスP0 に対して実行される。同様にして、ステ
ップ1270及び1280において、プロセスPN は、
同報通信された回復ライン310を受信及び処理する
が、これは、プロセスPN によって、プロセスP0 及び
他の全ての監視下のプロセスの処理と実質的に平行して
処理される。
【0118】監視下の全てのプロセスが再計算された回
復ライン310の処理を終了すると、プログラム制御
は、ステップ1290において、プログレッシブ再試行
回復アルゴリズム700に戻り、各監視下のプロセスP
0 からPN に対して通常の実行が再開される。前に検出
された故障がバイパスされた場合は、プログラム制御は
継続される。故障がバイパスされなかった場合は、検出
モニタ20が故障を再び検出し、プログレッシブ再試行
回復アルゴリズム700を再開するが、今回は、システ
ムを完全に再開することが要求される。
【0119】回復再プレイサブルーチン 前述のように、プロセスメッセージログサブルーチン1
300が、プログレッシブ再試行回復アルゴリズム70
0の各ステップにおいて、一つ或は複数のプロセスに対
して実行される。プロセスメッセージログサブルーチン
1300は、関連するプロセスのレシーバログファイル
90内の全てのメッセージを再計算された回復ラインに
基づいて分類する。その後、プロセスメッセージログサ
ブルーチン1300は、決定論的メッセージの再プレイ
及び過渡メッセージの再送信を開始する。加えて、プロ
セスメッセージログサブルーチン1300は、ステップ
2の再試行において、故障プロセスに対する過渡メッセ
ージの並べ替えを行ない、さらに、ステップ4の再試行
においては、故障プロセスにメッセージを送信した全て
のプロセスに関してこれを行なう。プロセスメッセージ
ログサブルーチン1300は、複数の異なるアプリケー
ションプロセスによって、別個に実質的に平行して遂行
されることに注意する。
【0120】プロセスメッセージログサブルーチン13
00は、ステップ1301において任意のプロセスによ
って開始される。ステップ1310において、プロセス
メッセージログサブルーチン1300を実行しているア
プリケーションプロセスの現在のプロセス状態が回復ラ
インの所に位置するか決定するためのテストが遂行され
る。ステップ1310において、プロセスメッセージロ
グサブルーチン1300を実行しているアプリケーショ
ンプロセスの現在のプロセス状態が既に回復ラインの所
にあることが決定された場合は、そのアプリケーション
プロセスは、状態の再生に対する処理を遂行する必要は
ない。従って、プログラム制御は、ステップ1380に
おいて、呼び出しファンクションに戻る。ただし、ステ
ップ1310において、プロセスメッセージログサブル
ーチン1300を実行しているアプリケーションプロセ
スの現在のプロセス状態が回復ラインの所にないことが
決定された場合は、関連するアプリケーションプロセス
のレシーバログファイル90内の全てのメッセージは、
図3との関連で上に定義されたように、決定論的、過
渡、或は孤児メッセージとして分類される。
【0121】ステップ1330において、プロセスメッ
セージログサブルーチン1300を実行しているアプリ
ケーションプロセスに対する、これらが回復ラインの後
に送信されたものでありもはや正当でない、全ての孤児
メッセージが破棄される。その後、アプリケーションプ
ロセスは、ステップ1340において、その最後の実チ
ェックポイントに戻り、次に、後に図14aと14bと
の関連で説明される決定論的再プレイサブルーチン14
00を開始し、そのアプリケーションプロセスに対する
決定論的メッセージを回復ラインに至るまで再プレイす
る。次に、ステップ1350において、再計算された回
復ラインと共に含まれるメッセージが現在のアプリケー
ションプロセスがその過渡メッセージを並べ替えるべき
であることを示すか決定するためのテストが遂行され
る。ステップ2の再試行の場合は、故障プロセスが、そ
のメッセージの並べ替えを行ない、一方、ステップ4の
再試行の場合は、故障プロセスにメッセージを送信した
プロセスが、それらのメッセージの並べ替えを行なうこ
とに注意する。一つの好ましい実施例においては、中央
回復コーディネータ75は、図15aと15bとの関連
で後に説明されるように、再計算された回復ラインと共
にメッセージベクトルを送信する。このメッセージベク
トルは、各監視下のプロセスに対して一つの欄を持つ。
ある特定のプロセスがその過渡メッセージを並べ替える
ことを要求される場合は、メッセージベクトル内の対応
する欄が、好ましくは、“01”の二進値にセットされ
る。
【0122】一つの好ましい実施例においては、ステッ
プ2及びステップ4の再試行において過渡メッセージの
並べ替えを行なうための複数のオプションが提供され
る。省略時並べ替えオプションにおいては、好ましく
は、異なる参照識別子を持つ過渡メッセージがランダム
に並べ替えられるが、ただし、好ましくは、同一の参照
識別子を持つ同一の送信プロセスからのメッセージの順
番は維持される。こうして、メッセージが送信されると
きに参照識別子を指定することによって、必要に応じ
て、メッセージの従属性を強化することが可能である。
別の並べ替えオプションとして、同一プロセスからのメ
ッセージを一つのグループにまとめ、資源の解放を要求
するメッセージを資源の割り当てを要求するメッセージ
が実行される前に実行し、また、メッセージログ内に二
つのメッセージのみが存在する場合は、順番を反対にす
ることも可能である。
【0123】ステップ1350において、現在のアプリ
ケーションプロセスがその過渡メッセージの並べ替えを
行なうべきであることが決定された場合は、ステップ1
370において、これらの再プレイ及び再処理を行なう
前に、これらメッセージが適当に並べ替えられる。ただ
し、ステップ1350において、現在のアプリケーショ
ンプロセスがその過渡メッセージを並べ替えるべきでな
いことが決定された場合は、これらメッセージは、ステ
ップ1360において、適当なアプリケーションプロセ
スに伝送するために、単純に、通信チャネルに再供給さ
れる。その後、プログラム制御はステップ1380に進
み、ここで制御は呼び出しファンクションに戻る。
【0124】前述のように、決定論的再プレイサブルー
チン1400は、プロセスメッセージログサブルーチン
1300のステップ1340において、アプリケーショ
ンプロセスがその最後の実チェックポイントにロールバ
ックした後に実行される。決定論的再プレイサブルーチ
ン1400は、あるアプリケーションプロセスのレシー
バログファイル90内の全ての決定論的メッセージを決
定論的に再プレイし、これによって、状態の再生を可能
にする。加えて、決定論的再プレイサブルーチン140
0は、後に説明されるように、好ましくは、ピースワイ
ズ決定論的想定を検証するためのメカニズムを含む。決
定論的再プレイサブルーチン1400は、ステップ14
01から開始される。その後、決定論的再プレイサブル
ーチン1400は、ステップ1410において、現在の
アプリケーションプロセスのレシーバログファイル90
から現在のメッセージを取り出し、次に、ステップ14
15において、取り出されたメッセージを処理する。
【0125】ステップ1420において、アプリケーシ
ョンプロセスによる現在取り出されたメッセージの処理
の結果として、送信されるべき一つ或はそれ以上のメッ
セージが生成されるか調べるためのテストが遂行され
る。ステップ1420においてアプリケーションプロセ
スによる現在取り出されたメッセージの処理の結果とし
て送信されるべきメッセージが生成されないことが決定
された場合は、プログラム制御は、後に説明されるステ
ップ1445に進む。ただし、ステップ1420におい
てアプリケーションプロセスによる現在取り出されたメ
ッセージの処理の結果として送信されるべき少なくとも
一つのメッセージが生成されたことが決定された場合
は、ステップ1425において、ピースワイズ決定論的
想定を検証するためのテストが遂行される。これは、回
復の現在のステップにおいて再生されたメッセージが初
期の実行の際にセンダログファイル92内に格納された
メッセージと同一であるか検証することによって行なわ
れる。
【0126】ステップ1425において、再生されたメ
ッセージがセンダログファイル92内に格納されたメッ
セージと同一であることが発見された場合は、ステップ
1430において、再計算された回復ラインと共に含ま
れるメッセージが再生されたメッセージが故障プロセス
に向けられる場合に現在のアプリケーションプロセスが
実際に再生されたメッセージを送信すべきであることを
示すかを決定するためのテストが遂行される。故障プロ
セスにメッセージを送信したプロセスは、ステップ3の
再試行においてこれら再生されたメッセージを再送信す
ることに注意する。一つの好ましい実施例においては、
中央回復コーディネータ75は、図15aと15bとの
関連で後に説明されるように、再計算された回復ライン
と共にメッセージベクトルを送信する。このメッセージ
ベクトルは、各監視下のプロセスに対する欄を持つ。あ
る特定のプロセスがステップ3の再試行において故障プ
ロセスにメッセージを再送信すべきであるときは、メッ
セージベクトル内の各々の欄が、好ましくは、“10”
の二進値にセットされる。
【0127】ステップ1430において、再計算された
回復ラインと共に含まれるメッセージが現在のアプリケ
ーションプロセスが実際に再生されたメッセージを送信
すべきであることを示さない場合は、プログラム制御
は、後に説明されるように、メッセージを送信すること
なしに、ステップ1440に進む。ただし、ステップ1
430において、再計算された回復ラインと共に含まれ
るメッセージが現在のアプリケーションプロセスが実際
に再生されたメッセージを送信すべきであり、その再生
されたメッセージが故障プロセスに向けられるべきであ
ることが示される場合は、このメッセージは、ステップ
1435において、故障プロセスに向けられる。
【0128】ステップ1440において、現在受信され
たメッセージの処理に基づいて、送信されるべき追加の
メッセージが存在するか決定するためのテストが遂行さ
れる。ステップ1440において、現在の受信されたメ
ッセージの処理に基づいて送信されるべき追加のメッセ
ージが存在することが決定された場合は、プログラム制
御はステップ1425に戻り、上に説明の方法で継続す
る。ただし、ステップ1440において、現在受信され
たメッセージの処理に基づいて送信すべき追加のメッセ
ージが存在しないことが決定された場合は、プログラム
制御はステップ1445に進む。
【0129】ステップ1445においてレシーバログフ
ァイル90内に処理されるべき追加の決定論的メッセー
ジが存在しないか決定するためのテストが遂行される。
ステップ1445において、レシーバログファイル90
内に処理されるべき追加の決定論的メッセージが存在す
ることが決定された場合は、プログラム制御はステップ
1415に戻り、上に説明の方法で継続される。一方、
ステップ1445において、レシーバログファイル90
内に処理されるべき追加の決定論的メッセージが存在し
ないことが決定された場合は、プログラム制御は、ステ
ップ1447において、プロセスメッセージログサブル
ーチン1300に戻る。
【0130】ただし、ステップ1425において、再生
されたメッセージがセンダログファイル92内に格納さ
れたメッセージと同一でないことが決定された場合は、
非決定論的な事象が発生しており、ピースワイズ決定論
的想定は許されない。従って、ステップ1450(図1
4b)において、この非決定論的な事象より後の現在の
アプリケーションプロセスに対する全ての論理チェック
ポイントが破棄される。
【0131】現在のアプリケーションプロセスと関連す
るウォッチドッグ15は、次に、ステップ1455にお
いて、中央回復コーディネータ75に回復ライン310
を再計算するリクエストを送信する。中央回復コーディ
ネータ75がこのリクエストを処理し、回復ラインを再
計算する方法は、図15aと15bとの関連で後に説明
される。
【0132】中央回復コーディネータ75が回復ライン
の再計算を終えると、これは、再計算された回復ライン
情報を各監視下のアプリケーションプロセスに同報通信
する。再計算された回復ラインを受信すると、各監視下
のプロセスは、それぞれ、プロセスP0 及びPN に対し
て、図14b内の処理ブランチ1460及び1465に
よって示されるように、再計算された回復ラインを実質
的に平行して処理し、適当な応答を決定する。
【0133】プロセスP0 は同報通信された回復ライン
310をステップ1470において中央回復コーディネ
ータ75から受信する。その後、ステップ1475にお
いて、図13と関連して上で説明されたプロセスメッセ
ージログサブルーチン1300がプロセスP0 に対して
再実行される。同様にして、プロセスPN は、ステップ
1480及び1485において、同報通信された回復ラ
イン310を受信及び処理するが、これは、プロセスP
N によって、プロセスP0 及び他の全ての監視下のプロ
セスの処理と実質的に平行して処理される。
【0134】全ての監視下のプロセスが再計算された回
復ライン310の処理を終了すると、プロセス制御はス
テップ1490においてプログレッシブ再試行回復アル
ゴリズム700に戻り、各監視下のプロセスP0 からP
N に対して通常の実行が再開される。前に検出された故
障がバイパスされた場合は、プログラム制御は継続され
る。故障がバスパスされなかった場合は、エラー検出モ
ニタ20が再び故障を検出し、プログレッシブ再試行回
復アルゴリズム700が再開される。
【0135】回復ラインの計算 前述のように、故障プロセスを監視しているウォッチド
ッグ15は、プログレッシブ再試行回復アルゴリズム7
00のステップ2から5の各々において、中央回復コー
ディネータ75に、回復ラインを計算するリクエストを
送信する。中央回復コーディネータ75は、これらリク
エストを処理し、図15aと15bに示される回復ライ
ン計算アルゴリズム1500を実行する。回復ライン計
算アルゴリズム1500は、回復ラインの計算に対する
リクエストを受信した時点で、ステップ1505から開
始される。前述のように、回復ライン計算リクエスト
は、プログレッシブ再試行回復アルゴリズム700の現
在のステップの指標及び故障プロセスの指標を含む。
【0136】その後、回復ライン計算アルゴリズム15
00は、ステップ1510において、再計算された回復
ラインと共に同報通信されるメッセージベクトルをリセ
ットする。一つの好ましい実施例においては、メッセー
ジベクトルは、メッセージを各監視下のアプリケーショ
ンプロセスに送信するための欄を含むことに注意する。
二進メッセージ値00は、好ましくは、関連するアプリ
ケーションプロセスが通常のモードであることを示す。
二進メッセージ値01は、好ましくは、関連するアプリ
ケーションプロセスが、そのレシーバログファイル90
内のメッセージをそれらが再プレイ及び再処理される前
に並べ替えるべきであることを示す。最後に、二進メッ
セージ値10は、好ましくは、関連するアプリケーショ
ンプロセスがステップ3の再試行において故障アプリケ
ーションプロセスに実際にメッセージを再送信すべきで
あることを示す。
【0137】ステップ1515において、プログレッシ
ブ再試行回復アルゴリズム700によって制御され、現
在のステップ番号を決定するカウンタ変数Nが2に等し
いか決定するためのテストが遂行される。ステップ15
15においてカウンタ変数Nの値が2に等しいことが決
定された場合は、これは、中央回復コーディネータ75
が現在の故障の回復のために回復ラインを再計算する最
初の試みである。中央回復コーディネータ75は、ステ
ップ1の回復には巻き込まれないことに注意する。
【0138】従って、中央回復コーディネータ75は、
ステップ1520において、監視下の全てのアプリケー
ションプロセスに、それらのレシーバログファイル90
内の全てのメッセージに関して従属情報を要求するメッ
セージを同報通信する。中央回復コーディネータ75
は、ステップ1525において各監視下のプロセスから
送信された従属情報を受信する。故障プロセスは、レシ
ーバ並べ替えサブルーチン(ステップ2)900の実行
の際に最後の実チェックポイントより後のそのレシーバ
ログファイル90内のメッセージに対する処理順番情報
を破棄するが、これは、結果として、最初に受信された
メッセージより後の論理チェックポイントを無効にする
機能を果たすことに注意する。従って、回復ライン計算
アルゴリズム1500は、ステップ1528において、
最後の実チェックポイント以降に故障プロセスによって
受信された最初のメッセージより後の従属情報から故障
プロセスに対する論理チェックポイントを除去すべきで
ある。
【0139】ステップ2の再試行においては、故障プロ
セスのみがそのレシーバログファイル90内のメッセー
ジの並べ替えを行なうべきである。従って、回復ライン
計算アルゴリズム1500は、ステップ1530におい
て、故障プロセスに対するメッセージベクトル欄を二進
値の“01”にセットし、故障プロセスが、そのレシー
バログファイル90内の過渡メッセージを、それらを再
プレイ及び再処理する前に並べ替えるべきであることを
示す。その後、プログラム制御は、ステップ1570
(図15b)に進む。
【0140】ただし、ステップ1515においてカウン
タ変数Nの値が2に等しくないことが決定された場合
は、ステップ1535においてカウンタ変数Nの値が3
に等しいか決定するためのテストが遂行される。ステッ
プ3の再試行に対しては、回復ライン計算アルゴリズム
1500は、ステップ2の再試行に対して決定されたの
と同一の回復ラインを構成するが、ただし、メッセージ
ベクトルが修正される点に注意する。ステップ1535
において、カウンタ変数Nの値が3に等しいことが決定
された場合は、回復ライン計算アルゴリズム1500
は、ステップ1540において、故障プロセスにメッセ
ージを送信した監視下の全てのアプリケーションプロセ
スに対してメッセージベクトル欄を二進値の“10”に
セットし、これらプロセスがそれらのレシーバログファ
イル90内の決定論的メッセージを実際に再送信すべき
であることを示す(図15b)。
【0141】ただし、ステップ1535において、カウ
ンタ変数Nの値が3に等しくないことが決定された場合
は、ステップ1545において、カウンタ変数Nの値が
4に等しいか決定するためのテストが遂行される。ステ
ップ1545においてカウンタ変数Nの値が4に等しい
ことが決定された場合は、回復ライン計算アルゴリズム
1500は、ステップ1550において、故障プロセス
にメッセージを送信した全てのプロセスについて、後に
説明される通信グラフから、故障プロセスに送信された
最初のメッセージより後ろの全ての論理チェックポイン
トを除去する。
【0142】その後、回復ライン計算アルゴリズム15
00は、ステップ1555において、故障プロセスにメ
ッセージを送信した全ての監視下のアプリケーションプ
ロセスに対してメッセージベクトル欄を二進値の“0
1”にセットし、これらのプロセスがそれらのレシーバ
ログファイル90内の過渡メッセージをこれらを再プレ
イ及び再処理する前に並べ替えるべきであることを示
す。その後、プログラム制御は、ステップ1570に進
む(図15b)。ただし、ステップ1545においてカ
ウンタ変数Nの値が4に等しくないことが決定された場
合は、ステップ1560(図15b)において、カウン
タ変数Nの値が5に等しいか決定するためのテストが遂
行される。ステップ1560において、カウンタ変数N
の値が5に等しい場合は、回復ライン計算アルゴリズム
1500は、ステップ1565において、全ての監視下
のプロセスについて、全ての監視下のプロセスのそれら
の一貫性のある大域チェックポイントに至るまでの広範
囲ロールバックを開始するために、全ての論理チェック
ポイントを破棄する。その後、プログラム制御は、ステ
ップ1570(図15b)に進む。
【0143】プログラム制御がステップ1570(図1
5b)に到達した時点では、回復ライン計算アルゴリズ
ム1500は、既にそのステップ2の再試行の実行の際
に従属情報を集めており、また、必要であれば、ステッ
プ4とステップ5の再試行に対するステップ1550及
びステップ1565において、従属情報の修正を終了し
ている。回復ライン計算アルゴリズム1500は、ステ
ップ1570において、必要に応じて修正されたこれら
従属情報を使用して通信グラフを構成し、次に、ステッ
プ1580において、ロールバック伝播アルゴリズムと
構成された通信グラフを使用して、回復ラインを再計算
する。通信グラフを構成するため、及び回復ラインを計
算するためにロールバック伝播アルゴリズムを適用する
ための、適当な方法の説明に関しては、Yi-Min Wang と
W.Kent Fuchsによって、Proc. IEEE Symposium Reliabl
e Distributed Systems、pp.78-85(Oct.1993) に掲載の
論文『Lazy Checkpoint Coordination for Bounding Ro
llback Propagation』を参照されたい。その後、回復ラ
イン計算アルゴリズム1500は、再計算された回復ラ
インをメッセージベクトルと共に、全ての監視下のアプ
リケーションプロセスに同報通信し、これらは、上に説
明の方法によって処理される。
【0144】メッセージ並べ替えによるバイパス 特定の故障の性質に関する情報を得ることができる場合
は、プログレッシブ再試行回復アルゴリズム700の並
べ替えステップに直接に進むのが適当である。プログレ
ッシブ再試行回復アルゴリズム700の再プレイステッ
プ、つまり、ステップ1及び3は、非決定論的な振る舞
いをするアプリケーションプロセス内のソフトウエア故
障をバスパスするのに適する。ただし、これら再プレイ
ステップは、決定論的な振る舞いを示すアプリケーショ
ンプロセス、換言すれば、同一の入力を与えられた場合
同一に振る舞うアプリケーションプロセス内の故障をバ
イパスするのには適当でない。従って、決定論的な振る
舞いを示すことが知られている特定のアプリケーション
プロセスに対しては、回復は、直接に並べ替えステッ
プ、つまり、ステップ2及び4に進むべきである。
【0145】一つの実施例においては、故障耐性ライブ
ラリ82には、あるアプリケーションプロセスによって
呼び出されると、非決定論ビットをセットし、そのプロ
セスがある非決定論的な振る舞い、例えば、時間従属事
象、システム呼の失敗、或は信号の割り込みを含むこと
を示す一つのファンクションが含まれる。従って、エラ
ー検出モニタ20によってアプリケーションプロセス内
にある故障が検出されると、再開サブシステム30は、
非決定論ビットの値を評価し、このビットがそのアプリ
ケーションプロセスによってセットされているか決定す
る。このビットがセットされている場合は、その回復
は、ステップ1の再試行から開始されるべきである。た
だし、このビットがセットされてない場合は、回復は、
直接に並べ替えステップに進むべきである。この並べ替
えステップは、故障プロセスによって受信された入力の
シーケンスを並べ替える機能を果たす。故障プロセスに
よって受信された順序を持つ入力は、メッセージ、ファ
イル、事象、動作或は他のデータであり得ることに注意
する。
【0146】加えて、資源割り当て問題、例えば、資源
の枯渇に起因することが知られているソフトウエア故障
からの回復も直接にステップ2の並べ替えに進むべきで
ある。例えば、あるシステムが二つのファイル記述子の
みを持ち、そのシステムが3つの一連のファイルを開く
リクエストを、その間にはさまれたファイルを閉じるリ
クエストなしに受信すると、このシステムは、ファイル
記述子を使いつくしてまい、結果として資源割り当て問
題が発生する。ただし、システムがその入力のシーケン
スの並べ替えを行なう場合は、ファイルを閉じるリクエ
ストをファイルを開く第三のリクエストの前に処理する
ことによって、このソフトウエア故障をバスパスするこ
とが可能である。さらに、プロセスが入力が特定の順番
で到着することを想定するが、これらが実際にはそれと
は異なる順番で到着するようなレーシングバグに起因す
ることが知られているソフトウエア故障からの回復もス
テップ2の並べ替えに進むべきである。こうして、入力
のシーケンスが並べ替えられると、これらが適当な順番
を取り、ソフトウエア故障をバスパスする機会が得られ
る。
【0147】一例 ステップ1の再試行の解説 あるシステムが共有データ構造にアクセスする複数のプ
ロセスを含み、互いに排他的なアクセスを確保するため
のロッキングメカニズムがバグを含む或はシステム内に
このメカニズムが存在しない場合は、あるプロセスがデ
ータ構造の読出しを試みている際に別のプロセスがデー
タ構造の更新、例えば、新たなデータノードを挿入する
ためにポインタの操作を行なうような事態が発生し得
る。このような場合、読出しプロセスが、セグメント化
違反故障を受信し、これがウォッチドッグ15によって
検出され、このために回復が再開されることとなる。読
出しプロセスが再開され、ステップ1の再試行の際に再
び同一のデータ構造にアクセスするためのリクエストメ
ッセージが再プレイされた場合、この読出し動作は、デ
ータ構造を更新するプロセスが更新を終えている可能性
が高いために、成功することとなる。
【0148】注意すべき点として、このタイプの故障
は、互いに排他的なアクセスを保証するためのロッキン
グメカニズムを提供することによって回避することもで
きるが、キメの粗いロックは、結果として、読出しプロ
セスを不必要にブロックすることとなり、反対に、キメ
の細かいロックは、結果として、大きな性能の劣化を引
き起こし、追加のソフトウエア上の複雑さを導入するこ
ととなる。従って、プログレッシブ再試行法のステップ
1のメッセージ再プレイは、同時性問題を扱うためのロ
ッキングメッセージに対する信頼性があり、効率の良い
代替を提供する。
【0149】ステップ2の再試行の解説 ファイルを維持するためのファイルシステムは、通常、
3つの主要な動作、つまり、ファイルを開く動作、ファ
イルに書込む動作及びファイルを閉じる動作を利用す
る。ファイルを識別するために利用されるファイル記述
子の数は限られているために、ファイルシステムがファ
イル記述子を使い尽くしてしまうことがある。従って、
ファイルシステムは、現在幾つのファイルが開かれてい
るかを追跡することが要求される。全てのファイル記述
子が利用された場合には、境界条件が発生することとな
る。この境界条件を扱う資源マネジャがバグを持つ場
合、ファイルシステムは、境界条件が発生する度にハン
グアップすることとなる。
【0150】以下の例はステップ2のメッセージ並べ替
えによって、いかにしてファイルシステム内の境界条件
がバイパスできるかを解説する。ここで、コマンドO1
は、ファイル1を開くコマンドを表わし、コマンドW1
はファイル1にデータを書込むコマンドを表わし、コマ
ンドC1 は、ファイル1を閉じるコマンドを表わし、ま
た、ファイルシステムは、同時に、最高2つまでの開い
たファイルを持つことができるものとする。このファイ
ルシステムがコマンドシーケンス、 O12123312 を受信した場合、このファイルシステムは、O3 を処理
した段階で境界条件に入り、ハングアップすることとな
る。すると、ソフトウエア故障がウォッチドッグ15に
よって検出され、これは、故障プロセスの再開を開始す
る。
【0151】注意すべき点として、この故障は、ステッ
プ1の再試行によっては、これらメッセージがレシーバ
ログファイル90から同一の順番で再プレイされた場合
は、境界条件がこれでも発生するために、バスパスする
ことはできない。従って、プログレッシブ再試行回復ア
ルゴリズム700は、ステップ2の再試行に進む。ステ
ップ2の再試行において、メッセージシーケンスが以下
のように並べ替えられることとなる。 O11122233 こうして並べ替えられたメッセージが故障プロセスによ
って、再プレイされ、再処理された場合、境界条件は発
生せず、ソフトウエア故障はバイパスされることとな
る。
【0152】ステップ3の再試行の解説 相互接続システムにおいては、チャネル制御モニタ(C
CM)プロセスが電話通信スイッチ内の空いたチャネル
を追跡するために利用される。CCMプロセスは、2つ
の他のプロセス、つまり:チャネル割り当てリクエスト
を送信するチャネル割り当て(CA)プロセスと、チャ
ネル割り当て解除リクエストを送信するチャネル割り当
て解除プロセス、からメッセージを受信する。CCMプ
ロセスに対する境界条件は、全てのチャネルが使用され
ており、プロセスが追加の割り当てリクエストを受信し
たときに発生する。境界条件が発生すると、幾つかのチ
ャネルを解放するため或はそれ以上のリクエストをブロ
ックするために、クリーンアップ手続きが呼び出され
る。ただし、このクリーンアップ手続きがソフトウエア
エラーを含む場合は、このクリーアップ手続きは、バグ
がトリガされたときクラッシュすることとなる。
【0153】以下の例は、ステップ3のメッセージ再プ
レイが故障をいかにしてバスパスするために利用できる
かを解説する。ここで、利用できるチャネルの数は5で
あり、コマンドr2 は、二つのチャネルを要求するコマ
ンドを表わし、コマンドf2は、二つのチャネルを解放
するコマンドを表わすものとする。境界条件のために、
以下のコマンドシーケンス、つまり、 CAが r231 を送信 CDが f231 を送信 CCMが r231 を受信 はCCMプロセスのクラッシュを起こすこととなる。つ
まり、CCMプロセスは、r1 を受信した時点でクラッ
シュし、結果として、境界条件が発生する。ただし、C
CMプロセスが、このクラッシュの前にメッセージf2
を受信し、登録する場合は、CCMプロセスは、これら
の登録されたメッセージ(メッセージログ)を並べ替え
ることによって回復可能である。ただし、CCMプロセ
スがf2 コマンドを登録する前にクラッシュした場合>
は、ステップ2に再試行によるメッセージr2 、r3
1 の並べ替えは、役立たない。この場合には、CCM
のローカル的な回復は失敗し、CA及びCDは、それら
のメッセージを再送信することが要求される(ステップ
3)。
【0154】オペレーティングシステムのスケジューリ
ング及び伝送遅延の非決定性のために、これらメッセー
ジは、ステップ3のメッセージ再プレイにおいて、CC
Mプロセスの所に異なる順番で到着する可能性がある。
例えば、CCMプロセスが、これらメッセージを以下の
順番で受信することも考えられる。 r223311 この場合は境界条件は発生せず、従って、ステップ3の
再試行は、成功することとなる。
【0155】ステップ4の再試行の解説 我々は、我々の第四番目の例として、交換システム内で
の信号ルーティングポイント(SRP)の使用を挙げ
る。SRPの任務は、データパケットを発信スイッチか
ら宛先スイッチにルートすることにある。各SRPは、
そのバッファ内のパケットの数がしきい値を超えたと
き、入りトラヒックを低減するために、用心のために他
のSRPにOCメッセージを送信するための内臓式の過
負荷制御(OC)メカニズムを持つ。通常の動作におい
ては、SRP−Xは、あるスイッチに向けられたデータ
パケットをSRP−A或はSRP−Bのいずれかを通じ
てルートできるものと想定する。SRP−XがSRP−
AからのOCメッセージを受信すると、これは、SRP
−Aの潜在的な過負荷を回避するために、SRP−Bを
通じて全てのデータパケットをルートすることを開始す
る。ただし、同時に、SRP−Bに直接に接続されたス
イッチは、サービスリクエストの突然のバーストを受信
する。これら二つのタイプのトラヒックは、SRP−B
のバッファをすぐに満杯にし、このプロセスは、過負荷
制御メカニズムが呼び出される前にクラッシュし、ソフ
トウエア故障が発生する。
【0156】ステップ1から3におけるメッセージの再
プレイ及び並べ替えを通じてのSRP−Bのローカル的
な再試行では、これらが過負荷状態をバイパスすること
ができないために、故障を回復することはできない。こ
のために、SRP−Xメッセージの再プレイを巻き込む
ステップ3の再試行でも、同一の故障が発生する。従っ
て、SRP−Xは、ステップ4の再試行を開始し、ルー
トされるべきパケットとSRP−AからのOCメッセー
ジの並べ替えを試みる。これは、結果として、OCメッ
セージの処理を遅らせ、SRP−Bを通じてのトラヒッ
クを低減し、SRP−Bに回復する機会を与える。SR
P−Aに対する潜在的な過負荷は、起こらない場合もあ
り、発生した場合でも、ソフトウエア故障を起こすこと
なしに問題なく扱うことが可能となる。ここに示され解
説された幾つかの実施例及びバリエーションは、単に、
本発明の原理を解説するためのものであり、当業者にお
いては、様々な修正を、本発明の精神及び範囲から逸脱
することなしに実現することが可能であることが理解で
きるものである。
【図面の簡単な説明】
【図1】本発明に従う故障耐性計算システムを図解する
略ブロック図である。
【図2a】通信グラフを図解し、実チェックポイントと
論理チェックポイントを解説する図の1である。
【図2b】通信グラフを図解し、実チェックポイントと
論理チェックポイントを解説する図の2である。
【図3】通信グラフを図解し、再開、回復ラインとメッ
セージの分類について解説する。
【図4a】図1の故障耐性計算システム内で実行する各
監視下のアプリケーションプロセスに対して現在の情報
を維持する故障耐性プロセスリストを図解する。
【図4b】図1の故障耐性計算システムの多重モード環
境内の現在アクティブな各処理ノードのリストを維持す
るノードリストを図解する。
【図5a】それぞれ、関連するアプリケーションプロセ
スによって、それぞれ、受信或は送信されたメッセージ
の各々に関する情報を維持するレシーバログファイル及
びセンダログファイルの図解の1である。
【図5b】それぞれ、関連するアプリケーションプロセ
スによって、それぞれ、受信或は送信されたメッセージ
の各々に関する情報を維持するレシーバログファイル及
びセンダログファイルの図解の2である。
【図6a】複数の平行アプリケーションプロセスに対す
る通信パターンを図解し、これらプロセスが図7のプロ
グレッシブ再試行回復アルゴリズムの様々なステップに
よってどのような効果を受けるかを示す図の1である。
【図6b】複数の平行アプリケーションプロセスに対す
る通信パターンを図解し、これらプロセスが図7のプロ
グレッシブ再試行回復アルゴリズムの様々なステップに
よってどのような効果を受けるかを示す図の2である。
【図6c】複数の平行アプリケーションプロセスに対す
る通信パターンを図解し、これらプロセスが図7のプロ
グレッシブ再試行回復アルゴリズムの様々なステップに
よってどのような効果を受けるかを示す図の3である。
【図6d】複数の平行アプリケーションプロセスに対す
る通信パターンを図解し、これらプロセスが図7のプロ
グレッシブ再試行回復アルゴリズムの様々なステップに
よってどのような効果を受けるかを示す図の4である。
【図6e】複数の平行アプリケーションプロセスに対す
る通信パターンを図解し、これらプロセスが図7のプロ
グレッシブ再試行回復アルゴリズムの様々なステップに
よってどのような効果を受けるかを示す図の5である。
【図6f】複数の平行アプリケーションプロセスに対す
る通信パターンを図解し、これらプロセスが図7のプロ
グレッシブ再試行回復アルゴリズムの様々なステップに
よってどのような効果を受けるかを示す図の6である。
【図7】検出された故障を回復するために再開サブシス
テムによって利用される一例としてのプログレッシブ再
試行回復アルゴリズムを説明する流れ図である。
【図8】図7のプログレッシブ再試行回復アルゴリズム
のステップ1において利用される一例としてのレシーバ
再プレイサブルーチンを説明する流れ図である。
【図9】図7のプログレッシブ再試行回復アルゴリズム
のステップ2において利用される一例としてのレシーバ
並べ替えサブルーチン900を説明する流れ図である。
【図10】図7のプログレッシブ再試行回復アルゴリズ
ムのステップ3において利用される一例としてのセンダ
再プレイサブルーチンを説明する流れ図である。
【図11】図7のプログレッシブ再試行回復アルゴリズ
ムのステップ4において利用される一例としてのセンダ
並べ替えサブルーチンを説明する流れ図である。
【図12】図7のプログレッシブ再試行回復アルゴリズ
ムのステップ5において利用される一例としての広範囲
ロールバック再試行サブルーチンを説明する流れ図であ
る。
【図13】図7のプログレッシブ再試行回復アルゴリズ
ムのステップ2から5の際に利用される一例としてのプ
ロセスメッセージログサブルーチンを説明する流れ図で
ある。
【図14a】一体となって図13のプロセスメッセージ
ログサブルーチンによって回復の際に図5aと5bのメ
ッセージログ内のメッセージを決定論的に再プレイする
ために利用される一例としての決定論的再プレイサブル
ーチンを説明する流れ図の1である。
【図14b】一体となって図13のプロセスメッセージ
ログサブルーチンによって回復の際に図5aと5bのメ
ッセージログ内のメッセージを決定論的に再プレイする
ために利用される一例としての決定論的再プレイサブル
ーチンを説明する流れ図の2である。
【図15a】一体となって図7のプログレッシブ再試行
回復アルゴリズムの様々なステップに対する新たな回復
ラインの計算において中央回復コーディネータによって
利用される一例としての回復ライン計算アルゴリズムを
説明する流れ図の1である。
【図15b】一体となって図7のプログレッシブ再試行
回復アルゴリズムの様々なステップに対する新たな回復
ラインの計算において中央回復コーディネータによって
利用される一例としての回復ライン計算アルゴリズムを
説明する流れ図の2である。
【符号の説明】
10、12 ノード 50、52、54 処理ユニット 55、57 メモリユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 エンナン ファン アメリカ合衆国 08807 ニュージャー シィ,ブリッジウォーター,リンバーガ ー ドライヴ 33 (72)発明者 チャンドラ モハン キンタラ アメリカ合衆国 07059 ニュージャー シィ,ウォーレン,マウンテン アヴェ ニュー 29 (72)発明者 イー−ミン ワン アメリカ合衆国 07922 ニュージャー シィ,バークレイ ハイツ,パインウッ ド クレッサント 10 (56)参考文献 特公 昭60−29412(JP,B2) (58)調査した分野(Int.Cl.7,DB名) G06F 11/14 G06F 15/00

Claims (16)

    (57)【特許請求の範囲】
  1. 【請求項1】 アプリケーションプロセス内の故障をバ
    スパスするための装置であって、この装置が: 複数の平行アプリケーションプロセスを実行するための
    少なくとも一つのプロセッサ; 一つ或はそれ以上の前記のアプリケーションプロセスを
    監視するためのエラー検出モニタ(20)及びこのモニ
    タによって前記の複数のアプリケーションプロセスの一
    つの中に検出された故障をバイパスするためにプログレ
    ッシブ再試行回復アルゴリズム(700)を実行するた
    めの再開サブシステム(30)を含むウォッチドッグ
    (15);及び前記のアプリケーションプロセスを故障
    耐性にするために前記の一つ或はそれ以上のアプリケー
    ションプロセスから呼び出すことができる複数の故障耐
    性ライブラリファンクション(82)を格納するための
    メモリデバイス(55)を含み、この故障耐性ライブラ
    リが: あるアプリケーションプロセスと関連するデータのチェ
    ックポイント化動作を定期的に遂行するためのチェック
    ポイントファンクション; 回復モードの間に、前記メモリデバイスに含まれる不揮
    発性メモリ(44)からチェックポイント化されたデー
    タを復元するための回復ファンクション; 前記のアプリケーションプロセスによって生成された各
    出力メッセージを、前記の各出力メッセージがそのアプ
    リケーションプロセスによって別のアプリケーションプ
    ロセスに伝送される前に前記不揮発性メモリに記憶され
    たセンダログファイル(92)内に登録するための故障
    耐性書込みファンクションであって、回復モードの間に
    一つ或はそれ以上の前記の出力メッセージを抑圧するた
    めのメカニズムを含むような故障耐性書き込みファンク
    ション;及び前記のアプリケーションプロセスによって
    別のアプリケーションプロセスから受信された各入力メ
    ッセージをそれらが受信アプリケーションプロセスによ
    って処理される前に前記不揮発性メモリに記憶されたレ
    シーバログファイル(90)内に登録するための故障耐
    性読出しファンクションであって、通常の動作において
    は、通信チャネルから入力データを読出して受信された
    各入力メッセージをレシーバログファイル内に登録し、
    回復モードにおいては、この入力データが前記のレシー
    バログファイルから読出されるようになっている故障耐
    性読出しファンクションを含むことを特徴とする装置。
  2. 【請求項2】 前記の故障耐性ライブラリがさらに所定
    の間隔で前記のエラー検出モニタに関連するプロセスが
    まだアクティブであることを示すハートビートメッセー
    ジを送信するためのファンクションを含み、前記のエラ
    ー検出モニタが前記のアプリケーションプロセスからの
    ハートビート信号が前記の所定の間隔が終了する前に受
    信されなかったときに故障を検出することを特徴とする
    請求項1の故障バイパス装置。
  3. 【請求項3】 前記の故障耐性ライブラリがさらにある
    アプリケーションプロセス内のクリティカルデータを指
    定することを許すクリティカルメモリファンクションを
    含み、前記のチェックポイントファンクションが前記指
    定されたクリティカルデータを前記不揮発性メモリの所
    定のエリアにコピーすることを特徴とする請求項1の故
    障バイパス装置。
  4. 【請求項4】 前記の故障耐性書込みファンクションが
    前記の回復モードにおいて各新たに生成されたメッセー
    ジを前記のセンダログファイル内の対応するメッセージ
    と比較することによってピースワイズ決定論的想定を検
    証することを特徴とする請求項1の故障バイパス装置。
  5. 【請求項5】 前記の故障耐性読出しファンクションが
    受信された各メッセージ内に含まれる送信プロセスのチ
    ェックポイント間隔番号をチェックし、前記の送信プロ
    セスのチェックポイント間隔番号が受信プロセスの現在
    のチェックポイント間隔番号よりも大きい場合、関連す
    る受信アプリケーションプロセスのチェックポイント化
    動作を開始し、これによって、一貫性を持つ大域的なチ
    ェックポイントを確保することを特徴とする請求項1の
    故障バイパス装置。
  6. 【請求項6】 前記のプログレッシブ再試行回復アルゴ
    リズムが複数の再試行ステップを含み、前の再試行ステ
    ップが検出された故障をバスパスすることに失敗したと
    き、徐々に回復ロールバックの範囲が増大されて行くこ
    とを特徴とする請求項1の故障バイパス装置。
  7. 【請求項7】 前記のプログレッシブ再試行回復アルゴ
    リズムが: 前記の故障プロセスをそのプロセスと関連する最後のチ
    ェックポイントまで回復し、前記の故障プロセスと関連
    する前記のメッセージログ内の最後のチェックポイント
    以降に前記の故障プロセスによって受信されたメッセー
    ジを前記の検出された故障の時点まで再プレイするため
    にレシーバ再プレイステップを遂行するステップ;及び
    前記のレシーバ再プレイステップによって前記のソフト
    ウエア故障がバスパスされない場合に、レシーバ並べ替
    えステップを遂行するステップを含み、ここでは、前記
    の故障プロセスのメッセージログ内の受信されたメッセ
    ージの少なくとも二つの順番が並べ替えられ、その後に
    再プレイが試みられ;プログレッシブ再試行回復アルゴ
    リズムがさらに前記のレシーバ並べ替えステップによっ
    て前記のソフトウエア故障がバイパスされない場合はセ
    ンダ再プレイステップを遂行するステップを含み、ここ
    で、前記の故障プロセスと関連する前記のメッセージロ
    グ内の前記の複数のメッセージの中の最後のチェックポ
    イントより後に前記の故障プロセスによって受信された
    一つ或はそれ以上のメッセージが破棄され、その後、前
    記の破棄されたメッセージを前記の故障プロセスに送信
    した各送信プロセスが前記のセンダ再プレイステップの
    際に前記の故障プロセスに複数のメッセージを再送信
    し;プログレッシブ再試行回復アルゴリズムがさらに; 前記のセンダ再プレイステップによって前記のソフトウ
    エア故障がバイパスされない場合、センダ並べ替えステ
    ップを遂行するステップを含み、ここでは、最後のチェ
    ックポイント以降に故障プロセスによって受信されたメ
    ッセージを前記の故障プロセスに送信した各送信プロセ
    スがそのメッセージログ内の前記の少なくとも二つのメ
    ッセージを並べ替え、その後、前記のメッセージの再プ
    レイを試み;プログレッシブ再試行回復アルゴリズムが
    さらに前記のセンダ並べ替えステップによって前記のソ
    フトウエア故障がバイパスされない場合は、広範囲ロー
    ルバックステップを遂行し、ここで、この広範囲ロール
    バックステップが、前記の監視下のステップの各々を最
    後の一貫性のある大域チェックポイントまでロールバッ
    クさせることを特徴とする請求項1の故障バイパス装
    置。
  8. 【請求項8】 前記のプログレッシブ再試行回復アルゴ
    リズムが監視下の各プロセスに対して破棄されてない最
    後の利用可能な実チェックポイント或は論理チェックポ
    イントの所の回復ラインを計算するためにロールバック
    伝播アルゴリズムを採用し、このロールバック伝播アル
    ゴリズムがロールバック伝播規則を守らせ、ここで、前
    記のメッセージログ内の関連するプロセスによって受信
    及び処理された前記の関連するプロセスの最後の実チェ
    ックポイントから前記の計算された回復ラインまでの間
    のメッセージが決定論的メッセージと称され、前記のメ
    ッセージログ内の前記の計算された回復ラインの前に送
    信され前記の回復ラインの後に受信されたメッセージが
    過渡メッセージと称され、前記のプログレッシブ再試行
    回復アルゴリズムが: 前記の故障したプロセスを最後のチェックポイントまで
    回復し、次に、前記の故障プロセスと関連するメッセー
    ジログ内の前記の故障プロセスによって前記の最後のチ
    ェックポイント以降に受信されたメッセージを前記の検
    出された故障のポイントまで再プレイするために、レシ
    ーバ再プレイステップを遂行するステップ;及び前記の
    レシーバ再プレイステップによって前記のソフトウエア
    の故障がバイパスされない場合は、レシーバ並べ替えス
    テップを遂行するステップを含み、前記のレシーバ並べ
    替えステップがさらに: 前記の故障したプロセスと関連する前記のメッセージロ
    グ内の最後のチェックポイントより後に受信されたメッ
    セージに対する処理順番情報を破棄するサブステップ; 回復ラインを計算するサブステップ; 前記の故障したプロセスのメッセージログ内の過渡メッ
    セージの並べ替えを行なうサブステップ;及び現在のプ
    ロセス状態が回復ラインの所にない監視下の各プロセス
    のメッセージログ内の決定論的メッセージを再プレイ
    し、過渡メッセージを再プレイ或は再供給するサブステ
    ップを含み;プログレッシブ再試行回復アルゴリズムが
    さらに前記のレシーバ並べ替えステップによって前記の
    ソフトウエアの故障がバイパスされない場合は、センダ
    再プレイステップを遂行するステップを含み、このセン
    ダ再プレイステップがさらに: 前記の故障プロセスと関連するメッセージログ内の前記
    の故障プロセスによって前記の故障プロセスに対して確
    保された最後のチェックポイントよりも後に受信された
    メッセージを破棄するサブステップ;及び現在のプロセ
    ス状態が前記の回復ラインの所にない監視下の各プロセ
    スのメッセージログ内の決定論的メッセージを再プレイ
    し、過渡メッセージを再供給するサブステップを含み、
    ここで、初期の処理の際に前記の破棄されたメッセージ
    を前記の故障プロセスに送信した各送信プロセスが、こ
    のセンダ再プレイステップにおいて、前記の故障プロセ
    スにメッセージを再送信し;このプログレッシブ再試行
    回復アルゴリズムがさらに前記のセンダ再プレイステッ
    プによって前記のソフトウエアの故障がバスパスされな
    い場合はセンダ並べ替えステップを遂行するステップを
    含み、このセンダ並べ替えステップがさらに: 前記の送信プロセスと関連するメッセージログ内の前記
    の故障プロセスと関連する最後のチェックポイント以降
    に前記の送信プロセスによって前記の故障プロセスに送
    信された最初のメッセージより前の論理チェックポイン
    トより後の各メッセージに対する処理順番情報を破棄す
    るサブステップ; 回復ラインを再計算するサブステップ; 前記の送信プロセスと関連するメッセージログ内の過渡
    メッセージの並べ替えを行なうサブステップ;及び現在
    のプロセス状態が前記の回復ラインの所にない監視下の
    各プロセスのメッセージログ内の決定論的メッセージを
    再プレイし、過渡メッセージを再プレイ或は再供給する
    サブステップを含み;前記のプログレッシブ再試行回復
    アルゴリズムがさらに前記のセンダ並べ替えステップに
    よって前記のソフトウエアの故障がバスパスされない場
    合は、広範囲ロールバックステップを遂行するステップ
    を含み、この広範囲ロールバックステップが前記の監視
    下の各プロセスを最後の一貫性のある大域チェックポイ
    ントまでロールバックさせることを特徴とする請求項1
    の故障バイパス装置。
  9. 【請求項9】 アプリケーションプロセスを故障耐性に
    するための方法であって、 あるアプリケーションプロセスを故障耐性にするために
    そのアプリケーションプロセス内の故障耐性ライブラリ
    から複数の適当なファンクションを呼び出すステップを
    含み、この故障耐性ライブラリが: あるアプリケーションプロセスと関連するデータのチェ
    ックポイント化動作を定期的に遂行するためのチェック
    ポイントファンクション; 回復モードの際に不揮発性メモリからチェックポイント
    化されたデータを復元するための回復ファンクション;
    及び前記のアプリケーションプロセスによって生成され
    た各出力メッセージを、前記の各出力メッセージがその
    アプリケーションプロセスによって別のアプリケーショ
    ンプロセスに伝送される前に前記不揮発性メモリに記憶
    されたセンダログファイル内に登録するための故障耐性
    書込みファンクションであって、ここでこの故障耐性書
    込みファンクションが回復モードの間に一つ或はそれ以
    上の前記の出力メッセージを抑圧するためのメカニズム
    を含むような故障耐性書き込みファンクション;及び前
    記のアプリケーションプロセスによって別のアプリケー
    ションプロセスから受信された各入力メッセージをそれ
    らが受信アプリケーションプロセスによって処理される
    前に前記不揮発性メモリに記憶されたレシーバログファ
    イル内に登録するための故障耐性読出しファンクション
    であって、通常の動作においては、通信チャネルから入
    力データを読出して受信された各入力メッセージをレシ
    ーバログファイル内に登録し、回復モードにおいては、
    この入力データが前記のレシーバログファイルから読出
    されるようになっている故障耐性読出しファンクション
    を含み、;前記故障耐性にするための方法がさらに前記
    のアプリケーションプロセスをソフトウエアの故障がな
    いか監視するステップ;及び前記の監視ステップにおい
    て故障が検出された場合、前記の故障を回復するために
    プログレッシブ再試行回復アルゴリズムを実行するステ
    ップを含み、このプログレッシブ再試行回復アルゴリズ
    ムが複数の再試行ステップを含み、これらステップが前
    の再試行ステップが検出された故障をバイパスすること
    に失敗したとき、回復ロールバックの範囲を徐々に増大
    するようになっていることを特徴とする方法。
  10. 【請求項10】 前記の故障耐性ライブラリがさらに所
    定の間隔で前記のエラー検出モニタに関連するプロセス
    がまだアクティブであることを示すハートビートメッセ
    ージを送信するためのファンクションを含み、前記のエ
    ラー検出モニタが前記のアプリケーションプロセスから
    のハートビート信号が前記の所定の間隔が終了する前に
    受信されなかったときに故障を検出することを特徴とす
    る請求項9の方法。
  11. 【請求項11】 前記の故障耐性ライブラリがさらにあ
    るアプリケーションプロセス内のクリティカルデータを
    指定することを許すクリティカルメモリファンクション
    を含み、前記のチェックポイントファンクションが前記
    の指定されたクリティカルデータを前記不揮発性メモリ
    の所定のエリアにコピーすることを特徴とする請求項9
    の方法。
  12. 【請求項12】 前記の故障耐性書込みファンクション
    が前記の回復モードにおいて各新たに生成されたメッセ
    ージを前記のセンダログファイル内の対応するメッセー
    ジと比較することによってピースワイズ決定論的想定を
    検証することを特徴とする請求項9の方法。
  13. 【請求項13】 前記の故障耐性読出しファンクション
    が受信された各メッセージ内に含まれる送信プロセスの
    チェックポイント間隔番号をチェックし、前記の送信プ
    ロセスのチェックポイント間隔番号が受信プロセスの現
    在のチェックポイント間隔番号よりも大きい場合、関連
    する受信アプリケーションプロセスのチェックポイント
    化動作を開始し、これによって、一貫性を持つ大域的な
    チェックポイントを確保することを特徴とする請求項9
    の方法。
  14. 【請求項14】 前記のプログレッシブ再試行回復アル
    ゴリズムが複数の再試行ステップを含み、前の再試行ス
    テップが検出された故障をバスパスすることに失敗した
    とき、徐々に回復ロールバックの範囲が増大されて行く
    ことを特徴とする請求項9の方法。
  15. 【請求項15】 前記のプログレッシブ再試行回復アル
    ゴリズムが: 前記の故障プロセスをそのプロセスと関連する最後のチ
    ェックポイントまで回復し、前記の故障プロセスと関連
    する前記のメッセージログ内の最後のチェックポイント
    以降に前記の故障プロセスによって受信されたメッセー
    ジを前記の検出された故障の時点まで再プレイするため
    にレシーバ再プレイステップを遂行するステップ;及び
    前記のレシーバ再プレイステップによって前記のソフト
    ウエア故障がバスパスされない場合に、レシーバ並べ替
    えステップを遂行するステップを含み、ここでは、前記
    の故障プロセスのメッセージログ内の受信されたメッセ
    ージの少なくとも二つの順番が並べ替えられ、その後に
    再プレイが試みられ;プログレッシブ再試行回復アルゴ
    リズムがさらに前記のレシーバ並べ替えステップによっ
    て前記のソフトウエア故障がバイパスされない場合はセ
    ンダ再プレイステップを遂行するステップを含み、ここ
    で、前記の故障プロセスと関連する前記のメッセージロ
    グ内の前記の複数のメッセージの中の最後のチェックポ
    イントより後に前記の故障プロセスによって受信された
    一つ或はそれ以上のメッセージが破棄され、その後、前
    記の破棄されたメッセージを前記の故障プロセスに送信
    した各送信プロセスが前記のセンダ再プレイステップの
    際に前記の故障プロセスに複数のメッセージを再送信
    し;プログレッシブ再試行回復アルゴリズムがさらに; 前記のセンダ再プレイステップによって前記のソフトウ
    エア故障がバイパスされない場合、センダ並べ替えステ
    ップを遂行するステップを含み、ここでは、最後のチェ
    ックポイント以降に故障プロセスによって受信されたメ
    ッセージを前記の故障プロセスに送信した各送信プロセ
    スがそのメッセージログ内の前記の少なくとも二つのメ
    ッセージを並べ替え、その後、前記のメッセージの再プ
    レイを試み;プログレッシブ再試行回復アルゴリズムが
    さらに前記のセンダ並べ替えステップによって前記のソ
    フトウエア故障がバイパスされない場合は、広範囲ロー
    ルバックステップを遂行し、ここで、この広範囲ロール
    バックステップが、前記の監視下のステップの各々を最
    後の一貫性のある大域チェックポイントまでロールバッ
    クさせることを特徴とする請求項9の方法。
  16. 【請求項16】 前記のプログレッシブ再試行回復アル
    ゴリズムが監視下の各プロセスに対して破棄されてない
    最後の利用可能な実チェックポイント或は論理チェック
    ポイントの所の回復ラインを計算するためにロールバッ
    ク伝播アルゴリズムを採用し、このロールバック伝播ア
    ルゴリズムがロールバック伝播規則を守らせ、ここで、
    前記のメッセージログ内の関連するプロセスによって受
    信及び処理された前記の関連するプロセスの最後の実チ
    ェックポイントから前記の計算された回復ラインまでの
    間のメッセージが決定論的メッセージと称され、前記の
    メッセージログ内の前記の計算された回復ラインの前に
    送信され前記の回復ラインの後に受信されたメッセージ
    が過渡メッセージと称され、前記のプログレッシブ再試
    行回復アルゴリズムが: 前記の故障したプロセスを最後のチェックポイントまで
    回復し、次に、前記の故障プロセスと関連するメッセー
    ジログ内の前記の故障プロセスによって前記の最後のチ
    ェックポイント以降に受信されたメッセージを前記の検
    出された故障のポイントまで再プレイするために、レシ
    ーバ再プレイステップを遂行するステップ;及び前記の
    レシーバ再プレイステップによって前記のソフトウエア
    の故障がバイパスされない場合は、レシーバ並べ替えス
    テップを遂行するステップを含み、前記のレシーバ並べ
    替えステップがさらに: 前記の故障したプロセスと関連する前記のメッセージロ
    グ内の最後のチェックポイントより後に受信されたメッ
    セージに対する処理順番情報を破棄するサブステップ; 回復ラインを計算するサブステップ; 前記の故障したプロセスのメッセージログ内の過渡メッ
    セージの並べ替えを行なうサブステップ;及び現在のプ
    ロセス状態が回復ラインの所にない監視下の各プロセス
    のメッセージログ内の決定論的メッセージを再プレイ
    し、過渡メッセージを再プレイ或は再供給するサブステ
    ップを含み;プログレッシブ再試行回復アルゴリズムが
    さらに前記のレシーバ並べ替えステップによって前記の
    ソフトウエアの故障がバイパスされない場合は、センダ
    再プレイステップを遂行するステップを含み、このセン
    ダ再プレイステップがさらに: 前記の故障プロセスと関連するメッセージログ内の前記
    の故障プロセスによって前記の故障プロセスに対して確
    保された最後のチェックポイントよりも後に受信された
    メッセージを破棄するサブステップ;及び現在のプロセ
    ス状態が前記の回復ラインの所にない監視下の各プロセ
    スのメッセージログ内の決定論的メッセージを再プレイ
    し、過渡メッセージを再供給するサブステップを含み、
    ここで、初期の処理の際に前記の破棄されたメッセージ
    を前記の故障プロセスに送信した各送信プロセスが、こ
    のセンダ再プレイステップにおいて、前記の故障プロセ
    スにメッセージを再送信し;このプログレッシブ再試行
    回復アルゴリズムがさらに前記のセンダ再プレイステッ
    プによって前記のソフトウエアの故障がバスパスされな
    い場合はセンダ並べ替えステップを遂行するステップを
    含み、このセンダ並べ替えステップがさらに: 前記の送信プロセスと関連するメッセージログ内の前記
    の故障プロセスと関連する最後のチェックポイント以降
    に前記の送信プロセスによって前記の故障プロセスに送
    信された最初のメッセージより前の論理チェックポイン
    トより後の各メッセージに対する処理順番情報を破棄す
    るサブステップ; 回復ラインを再計算するサブステップ; 前記の送信プロセスと関連するメッセージログ内の過渡
    メッセージの並べ替えを行なうサブステップ;及び現在
    のプロセス状態が前記の回復ラインの所にない監視下の
    各プロセスのメッセージログ内の決定論的メッセージを
    再プレイし、過渡メッセージを再プレイ或は再供給する
    サブステップを含み;前記のプログレッシブ再試行回復
    アルゴリズムがさらに前記のセンダ並べ替えステップに
    よって前記のソフトウエアの故障がバスパスされない場
    合は、広範囲ロールバックステップを遂行するステップ
    を含み、この広範囲ロールバックステップが前記の監視
    下の各プロセスを最後の一貫性のある大域チェックポイ
    ントまでロールバックさせることを特徴とする請求項9
    の方法。
JP15574395A 1994-06-22 1995-06-22 ソフトウエア故障回復のための再使用可能なソフトウエアモジュールを持つプログレッシブ再試行法及び装置 Expired - Fee Related JP3290052B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/263916 1994-06-22
US08/263,916 US5440726A (en) 1994-06-22 1994-06-22 Progressive retry method and apparatus having reusable software modules for software failure recovery in multi-process message-passing applications

Publications (2)

Publication Number Publication Date
JPH0830476A JPH0830476A (ja) 1996-02-02
JP3290052B2 true JP3290052B2 (ja) 2002-06-10

Family

ID=23003795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15574395A Expired - Fee Related JP3290052B2 (ja) 1994-06-22 1995-06-22 ソフトウエア故障回復のための再使用可能なソフトウエアモジュールを持つプログレッシブ再試行法及び装置

Country Status (5)

Country Link
US (1) US5440726A (ja)
EP (1) EP0691610B1 (ja)
JP (1) JP3290052B2 (ja)
CA (1) CA2150059C (ja)
DE (1) DE69511796T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19811051B4 (de) * 1998-03-13 2014-01-02 Mann + Hummel Gmbh Luftansaugeinrichtung für einen Verbrennungsmotor

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5560033A (en) * 1994-08-29 1996-09-24 Lucent Technologies Inc. System for providing automatic power control for highly available n+k processors
US6360338B1 (en) * 1995-01-24 2002-03-19 Compaq Computer Corporation Enhanced instrumentation software in fault tolerant systems
JPH08328880A (ja) * 1995-05-31 1996-12-13 Mitsubishi Electric Corp 複数のアプリケーションプログラムを同時に実行できるオペレーティングシステムにおける計算機運転管理システム
US6105148A (en) * 1995-06-16 2000-08-15 Lucent Technologies Inc. Persistent state checkpoint and restoration systems
WO1997000477A1 (en) * 1995-06-16 1997-01-03 Lucent Technologies Checkpoint and restoration systems for execution control
WO1997000476A1 (en) * 1995-06-16 1997-01-03 Lucent Technologies Persistent state checkpoint and restoration systems
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
US5594861A (en) * 1995-08-18 1997-01-14 Telefonaktiebolaget L M Ericsson Method and apparatus for handling processing errors in telecommunications exchanges
US5630047A (en) * 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US5712971A (en) * 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5805785A (en) * 1996-02-27 1998-09-08 International Business Machines Corporation Method for monitoring and recovery of subsystems in a distributed/clustered system
US5828882A (en) * 1996-03-15 1998-10-27 Novell, Inc. Event notification facility
JP3258228B2 (ja) * 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US5867651A (en) * 1996-08-27 1999-02-02 International Business Machines Corporation System for providing custom functionality to client systems by redirecting of messages through a user configurable filter network having a plurality of partially interconnected filters
JP3537281B2 (ja) * 1997-01-17 2004-06-14 株式会社日立製作所 共有ディスク型多重系システム
US5938775A (en) * 1997-05-23 1999-08-17 At & T Corp. Distributed recovery with κ-optimistic logging
US6154877A (en) * 1997-07-03 2000-11-28 The University Of Iowa Research Foundation Method and apparatus for portable checkpointing using data structure metrics and conversion functions
US6161219A (en) * 1997-07-03 2000-12-12 The University Of Iowa Research Foundation System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints
US6226627B1 (en) 1998-04-17 2001-05-01 Fuji Xerox Co., Ltd. Method and system for constructing adaptive and resilient software
US6266781B1 (en) * 1998-07-20 2001-07-24 Academia Sinica Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
US6195760B1 (en) * 1998-07-20 2001-02-27 Lucent Technologies Inc Method and apparatus for providing failure detection and recovery with predetermined degree of replication for distributed applications in a network
US7308699B1 (en) * 1998-09-15 2007-12-11 Intel Corporation Maintaining access to a video stack after an application crash
US6332199B1 (en) * 1998-10-29 2001-12-18 International Business Machines Corporation Restoring checkpointed processes including adjusting environment variables of the processes
US6401216B1 (en) * 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6393583B1 (en) 1998-10-29 2002-05-21 International Business Machines Corporation Method of performing checkpoint/restart of a parallel program
US6708224B1 (en) * 1999-01-19 2004-03-16 Netiq Corporation Methods, systems and computer program products for coordination of operations for interrelated tasks
US6442713B1 (en) * 1999-03-30 2002-08-27 International Business Machines Corporation Cluster node distress signal
KR100644572B1 (ko) * 1999-10-02 2006-11-13 삼성전자주식회사 디렉토리 서버에서 단말기 동작 판단장치 및 방법
US6772367B1 (en) 1999-10-13 2004-08-03 Board Of Regents, The University Of Texas System Software fault tolerance of concurrent programs using controlled re-execution
WO2001084314A2 (en) * 2000-05-02 2001-11-08 Sun Microsystem, Inc. Method and system for providing cluster replicated checkpoint services
US6691250B1 (en) 2000-06-29 2004-02-10 Cisco Technology, Inc. Fault handling process for enabling recovery, diagnosis, and self-testing of computer systems
US6757888B1 (en) 2000-09-08 2004-06-29 Corel Inc. Method and apparatus for manipulating data during automated data processing
US7853833B1 (en) * 2000-09-08 2010-12-14 Corel Corporation Method and apparatus for enhancing reliability of automated data processing
US6868193B1 (en) 2000-09-08 2005-03-15 Corel Inc. Method and apparatus for varying automated data processing
US6651121B1 (en) 2000-09-08 2003-11-18 Corel Inc. Method and apparatus for facilitating scalability during automated data processing
US6850956B1 (en) * 2000-09-08 2005-02-01 Corel Inc. Method and apparatus for obtaining and storing data during automated data processing
US7747673B1 (en) * 2000-09-08 2010-06-29 Corel Corporation Method and apparatus for communicating during automated data processing
US7000223B1 (en) 2000-09-08 2006-02-14 Corel Corporation Method and apparatus for preparing a definition to control automated data processing
US6938030B1 (en) 2000-09-08 2005-08-30 Corel Corporation Method and apparatus for facilitating accurate automated processing of data
US6961922B1 (en) 2000-09-08 2005-11-01 Corel Corporation Method and apparatus for defining operations to be performed during automated data processing
US6925593B1 (en) 2000-09-08 2005-08-02 Corel Corporation Method and apparatus for transferring data during automated data processing
US7296238B1 (en) 2000-09-08 2007-11-13 Corel Corporation Method and apparatus for triggering automated processing of data
US6944865B1 (en) 2000-09-08 2005-09-13 Corel Corporation Method and apparatus for saving a definition for automated data processing
US7035784B1 (en) * 2000-09-22 2006-04-25 Lucent Technologies Inc. Data-driven method simulator and simulation process
US7389341B2 (en) * 2001-01-31 2008-06-17 Accenture Llp Remotely monitoring a data processing system via a communications network
US10298735B2 (en) 2001-04-24 2019-05-21 Northwater Intellectual Property Fund L.P. 2 Method and apparatus for dynamic configuration of a multiprocessor health data system
US7146260B2 (en) * 2001-04-24 2006-12-05 Medius, Inc. Method and apparatus for dynamic configuration of multiprocessor system
US20040031033A1 (en) * 2001-06-02 2004-02-12 Ravi Chandra Method and apparatus for inter-process communication management
US8423674B2 (en) * 2001-06-02 2013-04-16 Ericsson Ab Method and apparatus for process sync restart
US7743126B2 (en) * 2001-06-28 2010-06-22 Hewlett-Packard Development Company, L.P. Migrating recovery modules in a distributed computing environment
US7249150B1 (en) * 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US20030023775A1 (en) * 2001-07-13 2003-01-30 International Business Machines Corporation Efficient notification of multiple message completions in message passing multi-node data processing systems
US20030014516A1 (en) * 2001-07-13 2003-01-16 International Business Machines Corporation Recovery support for reliable messaging
US7051331B2 (en) * 2002-01-02 2006-05-23 International Business Machines Corporation Methods and apparatus for monitoring a lower priority process by a higher priority process
US6968477B2 (en) * 2002-03-07 2005-11-22 International Business Machines Corporation System and method for system surveillance using firmware progress code
GB0211179D0 (en) * 2002-05-16 2002-06-26 Ibm A method,apparatus and computer program for reducing the amount of data checkpointed
KR100481512B1 (ko) * 2002-06-27 2005-04-07 삼성전자주식회사 통신모듈 오류 복구 기능을 구비한 휴대용 단말기 및 그방법
US7305582B1 (en) * 2002-08-30 2007-12-04 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on active replication
US7206964B2 (en) * 2002-08-30 2007-04-17 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on semi-active or passive replication
US7337444B2 (en) * 2003-01-09 2008-02-26 International Business Machines Corporation Method and apparatus for thread-safe handlers for checkpoints and restarts
US7114104B1 (en) * 2003-02-11 2006-09-26 Compuware Corporation System and method of fault detection in a Unix environment
JP4345334B2 (ja) * 2003-03-28 2009-10-14 日本電気株式会社 耐障害計算機システム、プログラム並列実行方法およびプログラム
US7107293B2 (en) * 2003-04-30 2006-09-12 International Business Machines Corporation Nested recovery scope management for stateless recovery agents
US8473693B1 (en) 2003-07-29 2013-06-25 Netapp, Inc. Managing ownership of memory buffers (mbufs)
US7249227B1 (en) * 2003-12-29 2007-07-24 Network Appliance, Inc. System and method for zero copy block protocol write operations
US7631071B2 (en) * 2004-01-23 2009-12-08 Microsoft Corporation Mechanism for ensuring processing of messages received while in recovery mode
US7684654B2 (en) * 2004-06-30 2010-03-23 General Electric Company System and method for fault detection and recovery in a medical imaging system
US7707586B2 (en) * 2004-09-08 2010-04-27 Intel Corporation Operating system independent agent
US7337650B1 (en) 2004-11-09 2008-03-04 Medius Inc. System and method for aligning sensors on a vehicle
FR2882448B1 (fr) * 2005-01-21 2007-05-04 Meiosys Soc Par Actions Simpli Procede de gestion, de journalisation ou de rejeu du deroulement d'un processus applicatif
US8260492B2 (en) * 2005-08-05 2012-09-04 Honeywell International Inc. Method and system for redundancy management of distributed and recoverable digital control system
US20070174695A1 (en) 2006-01-18 2007-07-26 Srinidhi Varadarajan Log-based rollback-recovery
US20070203974A1 (en) * 2006-02-09 2007-08-30 Baskey Michael E Method and system for generic application liveliness monitoring for business resiliency
US7941404B2 (en) * 2006-03-08 2011-05-10 International Business Machines Corporation Coordinated federated backup of a distributed application environment
US20070214457A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery of data in a batch processing system
US9358924B1 (en) 2009-05-08 2016-06-07 Eagle Harbor Holdings, Llc System and method for modeling advanced automotive safety systems
US10061464B2 (en) * 2010-03-05 2018-08-28 Oracle International Corporation Distributed order orchestration system with rollback checkpoints for adjusting long running order management fulfillment processes
US9269075B2 (en) * 2010-03-05 2016-02-23 Oracle International Corporation Distributed order orchestration system for adjusting long running order management fulfillment processes with delta attributes
US20110218926A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Saving order process state for adjusting long running order management fulfillment processes in a distributed order orchestration system
US20110218925A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Change management framework in distributed order orchestration system
US20110218923A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Task layer service patterns for adjusting long running order management fulfillment processes for a distributed order orchestration system
US20110218921A1 (en) * 2010-03-05 2011-09-08 Oracle International Corporation Notify/inquire fulfillment systems before processing change requests for adjusting long running order management fulfillment processes in a distributed order orchestration system
US10395205B2 (en) * 2010-03-05 2019-08-27 Oracle International Corporation Cost of change for adjusting long running order management fulfillment processes for a distributed order orchestration system
US8793262B2 (en) * 2010-03-05 2014-07-29 Oracle International Corporation Correlating and mapping original orders with new orders for adjusting long running order management fulfillment processes
US9904898B2 (en) * 2010-03-05 2018-02-27 Oracle International Corporation Distributed order orchestration system with rules engine
US10789562B2 (en) * 2010-03-05 2020-09-29 Oracle International Corporation Compensation patterns for adjusting long running order management fulfillment processes in an distributed order orchestration system
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
US9658901B2 (en) 2010-11-12 2017-05-23 Oracle International Corporation Event-based orchestration in distributed order orchestration system
US8880668B2 (en) * 2011-02-28 2014-11-04 Verizon Patent And Licensing Inc. Method and system for integrating data from multiple sources
US9495477B1 (en) 2011-04-20 2016-11-15 Google Inc. Data storage in a graph processing system
US10552769B2 (en) 2012-01-27 2020-02-04 Oracle International Corporation Status management framework in a distributed order orchestration system
US8762322B2 (en) 2012-05-22 2014-06-24 Oracle International Corporation Distributed order orchestration system with extensible flex field support
US9672560B2 (en) 2012-06-28 2017-06-06 Oracle International Corporation Distributed order orchestration system that transforms sales products to fulfillment products
US10536476B2 (en) 2016-07-21 2020-01-14 Sap Se Realtime triggering framework
US10482241B2 (en) 2016-08-24 2019-11-19 Sap Se Visualization of data distributed in multiple dimensions
US10542016B2 (en) 2016-08-31 2020-01-21 Sap Se Location enrichment in enterprise threat detection
US10673879B2 (en) 2016-09-23 2020-06-02 Sap Se Snapshot of a forensic investigation for enterprise threat detection
US10630705B2 (en) 2016-09-23 2020-04-21 Sap Se Real-time push API for log events in enterprise threat detection
US10534908B2 (en) 2016-12-06 2020-01-14 Sap Se Alerts based on entities in security information and event management products
US10534907B2 (en) * 2016-12-15 2020-01-14 Sap Se Providing semantic connectivity between a java application server and enterprise threat detection system using a J2EE data
US10530792B2 (en) 2016-12-15 2020-01-07 Sap Se Using frequency analysis in enterprise threat detection to detect intrusions in a computer system
US11470094B2 (en) 2016-12-16 2022-10-11 Sap Se Bi-directional content replication logic for enterprise threat detection
US10552605B2 (en) 2016-12-16 2020-02-04 Sap Se Anomaly detection in enterprise threat detection
US10764306B2 (en) 2016-12-19 2020-09-01 Sap Se Distributing cloud-computing platform content to enterprise threat detection systems
US10530794B2 (en) 2017-06-30 2020-01-07 Sap Se Pattern creation in enterprise threat detection
US10681064B2 (en) 2017-12-19 2020-06-09 Sap Se Analysis of complex relationships among information technology security-relevant entities using a network graph
US10986111B2 (en) 2017-12-19 2021-04-20 Sap Se Displaying a series of events along a time axis in enterprise threat detection
US11226876B2 (en) * 2018-06-21 2022-01-18 Sap Se Non-blocking backup in a log replay node for tertiary initialization

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4665520A (en) * 1985-02-01 1987-05-12 International Business Machines Corporation Optimistic recovery in a distributed processing system
US4982404A (en) * 1988-10-12 1991-01-01 American Standard Inc. Method and apparatus for insuring operation of a multiple part system controller
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
EP0471090B1 (en) * 1990-03-05 1998-09-16 Fujitsu Limited Message communication processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19811051B4 (de) * 1998-03-13 2014-01-02 Mann + Hummel Gmbh Luftansaugeinrichtung für einen Verbrennungsmotor

Also Published As

Publication number Publication date
CA2150059C (en) 1999-08-31
EP0691610A1 (en) 1996-01-10
JPH0830476A (ja) 1996-02-02
DE69511796D1 (de) 1999-10-07
CA2150059A1 (en) 1995-12-23
EP0691610B1 (en) 1999-09-01
US5440726A (en) 1995-08-08
DE69511796T2 (de) 2000-04-20

Similar Documents

Publication Publication Date Title
JP3290052B2 (ja) ソフトウエア故障回復のための再使用可能なソフトウエアモジュールを持つプログレッシブ再試行法及び装置
US5590277A (en) Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US5530802A (en) Input sequence reordering method for software failure recovery
US5938775A (en) Distributed recovery with κ-optimistic logging
US7145837B2 (en) Global recovery for time of day synchronization
US5805785A (en) Method for monitoring and recovery of subsystems in a distributed/clustered system
US7668923B2 (en) Master-slave adapter
US6857082B1 (en) Method for providing a transition from one server to another server clustered together
Silva et al. Fault-tolerant execution of mobile agents
US5551047A (en) Method for distributed redundant execution of program modules
US20050091383A1 (en) Efficient zero copy transfer of messages between nodes in a data processing system
US20050081080A1 (en) Error recovery for data processing systems transferring message packets through communications adapters
JPH02287858A (ja) 分散処理システムのリスタート方式
KR20010079917A (ko) 복제 서버용 프로토콜
MXPA06005797A (es) Sistema y metodo para la recuperacion en caso de fallas.
US20050080869A1 (en) Transferring message packets from a first node to a plurality of nodes in broadcast fashion via direct memory to memory transfer
US20050080920A1 (en) Interpartition control facility for processing commands that effectuate direct memory to memory information transfer
Alagappan et al. {Fault-Tolerance}, Fast and Slow: Exploiting Failure Asynchrony in Distributed Systems
US20050080945A1 (en) Transferring message packets from data continued in disparate areas of source memory via preloading
Long et al. On improving the availability of replicated files
US20050078708A1 (en) Formatting packet headers in a communications adapter
Kim et al. Approaches to implementation of a repairable distributed recovery block scheme
Wang et al. Progressive retry for software failure recovery in message-passing applications
JP3467750B2 (ja) 分散オブジェクト処理システム
JP3447347B2 (ja) 障害検出方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020212

LAPS Cancellation because of no payment of annual fees