(57)【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
所定のイベントに応答して、フォルトトレラントマネージャから、１つ以上のタスクを実行するように構成された少なくとも第１及び第２のプロセスに第１のメッセージを送信することであって、前記第１のメッセージが前記少なくとも第１及び第２のプロセスを介して伝搬し、前記第１のメッセージが前記１つ以上のタスクの１つ以上の前記実行をアボートすることを命令することと、
前記第１のメッセージの受信時に、前記少なくとも第１及び第２のプロセスによりアボートされるための前記１つ以上のタスクの前記実行をアボートすることを開始することと、
前記フォルトトレラントマネージャから、前記少なくとも第１及び第２のプロセスに処理再開メッセージを送信することであって、前記処理再開メッセージが前記第１及び第２のプロセスを介して伝搬することと、
前記少なくとも第１及び第２のプロセスをシャットダウンして再開する必要なく、保存された初期状態又は終了状態から前記少なくとも第１及び第２のプロセスの各々の実行を再開することと、を含む、方法。
【請求項２】
初期化の時に、前記第１及び第２のプロセスの各々の初期状態に関する情報を記憶することを更に含む、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
プロセスの実行が、前記プロセスの少なくとも１つの実行フェーズを実行することと、前記実行フェーズの完了時に、前記対応する実行フェーズの終了状態を表す情報を記憶することと、を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項４】
前記プロセスをシャットダウンする必要なく、前記保存された終了状態の１つから前記第１及び第２のプロセスの１つ以上の実行を再開することを含む、請求項３に記載のコンピュータにより実施される方法。
【請求項５】
前記所定のイベントが外部デバイスに対する接続の切断を表す、請求項１に記載のコンピュータにより実施される方法。
【請求項６】
前記所定のイベントが外部デバイスによるエラーを表す、請求項１に記載のコンピュータにより実施される方法。
【請求項７】
前記外部デバイスに対する前記接続が復元された場合に、プロセス実行が再開される、請求項５に記載のコンピュータにより実施される方法。
【請求項８】
前記外部デバイスによる前記エラーがクリアされた場合に、前記プロセスの前記実行が再開される、請求項６に記載のコンピュータにより実施される方法。
【請求項９】
前記所定のイベントが発生した実行フェーズの前に記憶された終了状態からプロセス実行が再開される、請求項３に記載のコンピュータにより実施される方法。
【請求項１０】
前記プロセスの実質的に起動直後に、前記所定のイベントが発生した場合、前記初期状態から前記第１及び第２のプロセスの１つ以上の実行を再開する、請求項２に記載のコンピュータにより実施される方法。
【請求項１１】
プロセス実行が、受信したデータストリームに１つ以上の処理アクションを実行して出力データを生成することを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項１２】
前記第１及び第２のプロセスにチェックポイントメッセージを送信することであって、前記チェックポイントメッセージが前記プロセスについての現在の情報を記憶するための命令を含むことと、
前記プロセスにおける前記チェックポイントメッセージの受信時に動作をアボートし、記憶領域に対して前記プロセスの現在の実行状態に関する情報の記憶を開始することと、
を更に含む、請求項１に記載のコンピュータにより実施される方法。
【請求項１３】
以前に記憶された初期状態又は終了状態を前記新しい初期状態又は終了状態で上書きすることを更に含む、請求項１２に記載のコンピュータにより実施される方法。
【請求項１４】
前記第１及び第２のプロセスの各々が、前記プロセスのためのデータを受信し、キューに入れるための１つ以上のデータキューと通信状態にある、請求項１に記載のコンピュータにより実施される方法。
【請求項１５】
ネットワーク関連イベントに応答して前記チェックポイントメッセージを生成することを更に含む、請求項１２に記載のコンピュータにより実施される方法。
【請求項１６】
前記ネットワーク関連イベントがネットワークシャットダウンを表す、請求項１５に記載のコンピュータにより実施される方法。
【請求項１７】
前記チェックポイントメッセージを定期的に生成することを更に含む、請求項１２に記載のコンピュータにより実施される方法。
【請求項１８】
前記プロセスによって処理される受信データレコード内の又は前記データレコードから導出される１つ以上のデータ値に応答して前記チェックポイントメッセージを生成することを更に含む、請求項１２に記載のコンピュータにより実施される方法。
【請求項１９】
処理再開メッセージに含まれた情報に部分的に基づいて、前記保存された終了状態の１つから前記第１及び第２のプロセスの１つ以上の実行を再開することを更に含む、請求項２に記載のコンピュータにより実施される方法。
【請求項２０】
前記第１のプロセスの実質的に初期化直後の前記第１のプロセスの第１の実行フェーズ中に、前記１つ以上のメッセージを受信することと、
前記第１のプロセスをシャットダウンして再開する必要なく、前記保存された初期状態から前記第１のプロセスの実行を再開することと、
を更に含む、請求項１に記載のコンピュータにより実施される方法。
【請求項２１】
所定のイベントに応答して、フォルトトレラントマネージャから、１つ以上のタスクを実行するように構成された少なくとも第１及び第２のプロセスに第１のメッセージを送信することであって、前記第１のメッセージが前記少なくとも第１及び第２のプロセスを介して伝搬し、前記第１のメッセージが前記１つ以上のタスクの１つ以上の前記実行をアボートすることを命令することと、
前記第１のメッセージの受信時に、前記少なくとも第１及び第２のプロセスによりアボートされるための前記１つ以上のタスクの前記実行をアボートすることを開始することと、
前記フォルトトレラントマネージャから、前記少なくとも第１及び第２のプロセスに処理再開メッセージを送信することであって、前記処理再開メッセージが前記第１及び第２のプロセスを介して伝搬することと、
前記少なくとも第１及び第２のプロセスをシャットダウンして再開する必要なく、保存された初期状態又は終了状態から前記少なくとも第１及び第２のプロセスの各々の実行を再開することと、をコンピューティングシステムに実行させるための命令を含むコンピュータプログラムを記憶するコンピュータ読み取り可能な記憶媒体。
【請求項２２】
所定のイベントに応答して、１つ以上のタスクを実行するように構成された少なくとも第１及び第２のプロセスに第１のメッセージを送信するように構成されたデバイス又はポートであって、前記第１のメッセージが前記少なくとも第１及び第２のプロセスを介して伝搬し、前記第１のメッセージが前記１つ以上のタスクの１つ以上の前記実行をアボートすることを命令する、デバイス又はポートと、
前記第１のメッセージの受信時に、前記少なくとも第１及び第２のプロセスによりアボートされるための前記１つ以上のタスクの前記実行をアボートすることを開始するように構成され、
前記少なくとも第１及び第２のプロセスに処理再開メッセージを送信し、前記処理再開メッセージが前記第１及び第２のプロセスを介して伝搬するように構成され、
前記第１のプロセスをシャットダウンして再開する必要なく、保存された初期状態又は終了状態から前記第１のプロセスの実行を再開するように構成された少なくとも１つのプロセッサと、
を含むコンピューティングシステム。
【請求項２３】
所定のイベントに応答して、フォルトトレラントマネージャから、１つ以上のタスクを実行するように構成された少なくとも第１及び第２のプロセスに第１のメッセージを送信するための手段であって、前記第１のメッセージが前記少なくとも第１及び第２のプロセスを介して伝搬し、前記メッセージが前記１つ以上のタスクの１つ以上の前記実行をアボートすることを命令する、手段と、
前記第１のメッセージの受信時に、前記少なくとも第１及び第２のプロセスによりアボートされるための前記１つ以上のタスクの前記実行をアボートすることを開始するための手段と、
前記フォルトトレラントマネージャから、前記少なくとも第１及び第２のプロセスに処理再開メッセージを送信する手段であって、前記処理再開メッセージが前記第１及び第２のプロセスを介して伝搬する、手段と、
前記少なくとも第１及び第２のプロセスをシャットダウンして再開する必要なく、保存された初期状態又は終了状態から前記少なくとも第１及び第２のプロセスの各々の実行を再開するための手段と、
を含むコンピューティングシステム。
【請求項２４】
コンピュータにより実施される方法であって、
コンピュータシステムを実行するマネージャから、所定のイベントに応答してアボートコマンドメッセージを送信することと、
１つ以上のタスクを実行するように構成された第１のプロセスで、アボートコマンドメッセージを受信することと、
前記第１のプロセスの前記１つ以上のタスクの実行をアボートすることと、
前記第１のプロセスから、１つ以上のタスクを実行するように構成された第２のプロセスにアボートコマンドメッセージを送信することと、
前記第２のプロセスの前記１つ以上のタスクの実行をアボートすることと、
戻されたアボートコマンドメッセージを前記マネージャに送信することと、
前記第１及び第２のプロセスをシャットダウンして再開する必要なく、保存された初期状態又は終了状態から前記第１のプロセスの前記１つ以上のタスクの各々及び前記第２のプロセスの前記１つ以上のタスクの各々の実行を再開することと、
を含む、方法。
【請求項２５】
前記第１のプロセスは、前記第２のプロセスにデータを与えるように構成され、前記第２のプロセスは、前記１つ以上のタスクを完了するため前記データを処理するように構成された、請求項２４に記載の方法。
【請求項２６】
コンピューティングシステムであって、
１つ以上のプロセッサであって、
所定のイベントに応答してアボートコマンドメッセージを送信するように構成されたマネージャと、
１つ以上のタスクを実行するように構成された一連のプロセスと、を実施するための命令を実行する、１つ以上のプロセッサを含み、
前記一連のプロセス内の第１のプロセスは、アボートコマンドメッセージの受信時に、前記第１のプロセスの１つ以上のタスクの実行をアボートし、前記一連のプロセス内の第２のプロセスであって、前記第１のプロセスの下流にある前記第２のプロセスにアボートコマンドメッセージを送信するように構成され、
前記第２のプロセスは、アボートコマンドメッセージの受信時に、前記第２のプロセスの１つ以上のタスクの実行をアボートするように構成され、
前記一連のプロセス内の最後のプロセスは、戻されたアボートコマンドメッセージを前記マネージャに送信するように構成された、
コンピューティングシステム。
【請求項２７】
前記第１のプロセスは、前記第２のプロセスにデータを与えるように構成され、前記第２のプロセスは、前記１つ以上のタスクを完了するため前記データを処理するように構成された、請求項２６に記載のシステム。
【請求項２８】
前記マネージャは、前記戻されたアボートコマンドメッセージの受信後に、処理再開メッセージを前記一連のプロセスに送信するように構成された、請求項２６に記載のシステム。
【請求項２９】
前記第２のプロセスから次の下流にあるプロセスにアボートコマンドメッセージを送信することを含み、
前記戻されたアボートコマンドメッセージは、前記下流のプロセスの最後のプロセスから前記マネージャに送信される、請求項２４に記載の方法。
【請求項３０】
前記マネージャが、前記戻されたアボートコマンドメッセージを受信した後に、前記マネージャから処理再開メッセージを送信し、前記第１のプロセスで前記処理再開メッセージを受信することを含む、請求項２４に記載の方法。
【請求項３１】
初期化の時に、前記第１及び第２のプロセスの各々の初期状態に関する情報を記憶することを前記コンピューティングシステムに実行させるための命令を含む、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３２】
プロセスの実行が、前記プロセスの少なくとも１つの実行フェーズを実行することと、前記実行フェーズの完了時に、前記対応する実行フェーズの終了状態を表す情報を記憶することと、を含む、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３３】
前記プロセスをシャットダウンする必要なく、前記保存された終了状態の１つから前記第１及び第２のプロセスの１つ以上の実行を再開することを前記コンピューティングシステムに実行させるための命令を含む、請求項３２に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３４】
前記所定のイベントが外部デバイスに対する接続の切断を表す、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３５】
前記所定のイベントが外部デバイスによるエラーを表す、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３６】
前記外部デバイスに対する前記接続が復元された場合に、プロセス実行が再開される、請求項３４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３７】
前記外部デバイスによる前記エラーがクリアされた場合に、前記プロセスの前記実行が再開される、請求項３５に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３８】
前記所定のイベントが発生した実行フェーズの前に記憶された終了状態からプロセス実行が再開される、請求項３２に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３９】
前記プロセスの実質的に起動直後に、前記所定のイベントが発生した場合、前記初期状態から前記第１及び第２のプロセスの１つ以上の実行を再開する、請求項３１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４０】
プロセス実行が、受信したデータストリームに１つ以上の処理アクションを実行して出力データを生成することを含む、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４１】
前記第１及び第２のプロセスにチェックポイントメッセージを送信することであって、前記チェックポイントメッセージが前記プロセスについての現在の情報を記憶するための命令を含むことと、
前記プロセスにおける前記チェックポイントメッセージの受信時に動作をアボートし、記憶領域に対して前記プロセスの現在の実行状態に関する情報の記憶を開始することと、
を前記コンピューティングシステムに実行させるための命令を含む、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４２】
以前に記憶された初期状態又は終了状態を前記新しい初期状態又は終了状態で上書きすることを前記コンピューティングシステムに実行させるための命令を含む、請求項４１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４３】
前記第１及び第２のプロセスの各々が、前記プロセスのためのデータを受信し、キューに入れるための１つ以上のデータキューと通信状態にある、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４４】
ネットワーク関連イベントに応答して前記チェックポイントメッセージを生成することを前記コンピューティングシステムに実行させるための命令を含む、請求項４１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４５】
前記ネットワーク関連イベントがネットワークシャットダウンを表す、請求項４４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４６】
前記チェックポイントメッセージを定期的に生成することを前記コンピューティングシステムに実行させるための命令を含む、請求項４１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４７】
前記プロセスによって処理される受信データレコード内の又は前記データレコードから導出される１つ以上のデータ値に応答して前記チェックポイントメッセージを生成することを前記コンピューティングシステムに実行させるための命令を含む、請求項４１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４８】
処理再開メッセージに含まれた情報に部分的に基づいて、前記保存された終了状態の１つから前記第１及び第２のプロセスの１つ以上の実行を再開することを前記コンピューティングシステムに実行させるための命令を含む、請求項３１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４９】
前記第１のプロセスの実質的に初期化直後の前記第１のプロセスの第１の実行フェーズ中に、前記１つ以上のメッセージを受信することと、
前記第１のプロセスをシャットダウンして再開する必要なく、前記保存された初期状態から前記第１のプロセスの実行を再開することと、
を前記コンピューティングシステムに実行させるための命令を含む、請求項２１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５０】
初期化の時に、前記第１及び第２のプロセスの各々の初期状態に関する情報を記憶するための手段を含む、請求項２３に記載のコンピューティングシステム。
【請求項５１】
プロセスの実行が、前記プロセスの少なくとも１つの実行フェーズを実行することと、前記実行フェーズの完了時に、前記対応する実行フェーズの終了状態を表す情報を記憶することと、を含む、請求項２３に記載のコンピューティングシステム。
【請求項５２】
前記プロセスをシャットダウンする必要なく、前記保存された終了状態の１つから前記第１及び第２のプロセスの１つ以上の実行を再開するための手段を含む、請求項５１に記載のコンピューティングシステム。
【請求項５３】
前記所定のイベントが外部デバイスに対する接続の切断を表す、請求項２３に記載のコンピューティングシステム。
【請求項５４】
前記所定のイベントが外部デバイスによるエラーを表す、請求項２３に記載のコンピューティングシステム。
【請求項５５】
前記外部デバイスに対する前記接続が復元された場合に、プロセス実行が再開される、請求項５３に記載のコンピューティングシステム。
【請求項５６】
前記外部デバイスによる前記エラーがクリアされた場合に、前記プロセスの前記実行が再開される、請求項５４に記載のコンピューティングシステム。
【請求項５７】
前記所定のイベントが発生した実行フェーズの前に記憶された終了状態からプロセス実行が再開される、請求項５１に記載のコンピューティングシステム。
【請求項５８】
前記プロセスの実質的に起動直後に、前記所定のイベントが発生した場合、前記初期状態から前記第１及び第２のプロセスの１つ以上の実行を再開する、請求項５０に記載のコンピューティングシステム。
【請求項５９】
プロセス実行が、受信したデータストリームに１つ以上の処理アクションを実行して出力データを生成することを含む、請求項２３に記載のコンピューティングシステム。
【請求項６０】
前記第１及び第２のプロセスにチェックポイントメッセージを送信することであって、前記チェックポイントメッセージが前記プロセスについての現在の情報を記憶するための手段を含むことと、
前記プロセスにおける前記チェックポイントメッセージの受信時に動作をアボートし、記憶領域に対して前記プロセスの現在の実行状態に関する情報の記憶を開始するための手段と、
を含む、請求項２３に記載のコンピューティングシステム。
【請求項６１】
以前に記憶された初期状態又は終了状態を前記新しい初期状態又は終了状態で上書きするための手段を含む、請求項６０に記載のコンピューティングシステム。
【請求項６２】
前記第１及び第２のプロセスの各々が、前記プロセスのためのデータを受信し、キューに入れるための１つ以上のデータキューと通信状態にある、請求項２３に記載のコンピューティングシステム。
【請求項６３】
ネットワーク関連イベントに応答して前記チェックポイントメッセージを生成するための手段を含む、請求項６０に記載のコンピューティングシステム。
【請求項６４】
前記ネットワーク関連イベントがネットワークシャットダウンを表す、請求項６３に記載のコンピューティングシステム。
【請求項６５】
前記チェックポイントメッセージを定期的に生成するための手段を含む、請求項６０に記載のコンピューティングシステム。
【請求項６６】
前記プロセスによって処理される受信データレコード内の又は前記データレコードから導出される１つ以上のデータ値に応答して前記チェックポイントメッセージを生成するための手段を含む、請求項６０に記載のコンピューティングシステム。
【請求項６７】
処理再開メッセージに含まれた情報に部分的に基づいて、前記保存された終了状態の１つから前記第１及び第２のプロセスの１つ以上の実行を再開するための手段を含む、請求項５０に記載のコンピューティングシステム。
【請求項６８】
前記第１のプロセスの実質的に初期化直後の前記第１のプロセスの第１の実行フェーズ中に、前記１つ以上のメッセージを受信するための手段と、
前記第１のプロセスをシャットダウンして再開する必要なく、前記保存された初期状態から前記第１のプロセスの実行を再開するための手段と、
を含む、請求項２３に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１１年２月１８日に出願された「Restarting Data Processing Systems」と題する米国特許出願第１３／０３１，０７８号に対する優先権を主張する。その全体的な内容は参照により本願にも含まれるものとする。
【０００２】
本記載はデータ処理システムの再開に関する。
【背景技術】
【０００３】
シングルプロセッサコンピュータによって提供される計算速度は、過去数十年間で飛躍的に進歩している。しかしながら、かかるプロセッサにより実行される多くのアプリケーションが必要とする計算容量は、最速のシングルプロセッサコンピュータをも超える場合がある。例えば、航空予約システムのようなトランザクショナルシステムにおいて、多数のユーザがコンピュータリソースに同時にアクセスすることがある。こういったユーザは通常、応答時間が短いことを期待している。シングルプロセッサコンピュータは、かかる要求に追いつくことができない恐れがある。このようなアプリケーションを処理して性能を向上させるために、並列処理システム等の多種多様なアーキテクチャが開発されている。一般に、並列処理システムによって用いられる多数のプロセッサは、単一の場所に配置するか又は遠隔分散させることができる。場合によっては、本質的に連続的かつリアルタイムに近い処理を含む大量のデータを処理するアプリケーションでは、処理能力のため、そういった並列処理システムに頼るようになっている。かかる処理能力は、システム障害に対してロバスト（robust）でレジスタンス（resistance）であること、すなわちフォルトトレラントであることが期待される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これらの能力は、大規模なインターネットベースのデータ処理からプライベートなネットワーク及び通信システム（例えば企業内「イントラネット」等）までに及ぶあらゆる種類及びサイズのコンピュータネットワークにとって有用である。
【課題を解決するための手段】
【０００５】
一態様において、概して、コンピュータにより実施される方法は、１つ以上のタスクとして実行されている少なくとも第１及び第２のプロセスを含むプロセスステージを介して所定のイベントに応答してメッセージを送信することであって、メッセージが１つ以上のタスクの実行のアボートを命令する、ことと、メッセージの受信時に、１つ以上のプロセスにより、１つ以上のタスクの実行のアボートを開始することと、を含む。
【０００６】
複数の態様は以下の１つ以上を含むことができる。
【０００７】
コンピュータにより実施されるこの方法は、初期化の時に第１及び第２のプロセスの各々の初期状態に関する情報を記憶することを含むことができる。プロセスの実行は、プロセスの少なくとも１つの実行フェーズを実行することと、実行フェーズの完了時に対応する実行フェーズの終了状態を表す情報を記憶することと、を含むことができる。コンピュータにより実施されるこの方法は、プロセスをシャットダウンする必要なく、保存された終了状態の１つから第１及び第２のプロセスの１つ以上の実行を再開することを含むことができる。
【０００８】
所定のイベントは外部デバイスに対する接続の切断である場合がある。所定のイベントは、外部デバイスによるエラーである場合がある。外部デバイスに対する接続が復元された場合にプロセス実行を再開することができる。外部デバイスによるエラーがクリアされた場合にプロセスの実行を再開することができる。所定のイベントが発生した実行フェーズの前に記憶された終了状態からプロセス実行を再開することができる。プロセスの起動の実質的に直後に所定のイベントが発生した場合、初期状態から第１及び第２のプロセスの１つ以上の実行を再開することができる。
【０００９】
プロセス実行は、受信したデータストリームに１つ以上の処理アクションを実行して出力データを生成することを含むことができる。コンピュータにより実施されるこの方法は、プロセスステージの第１及び第２のプロセスを介してチェックポイントメッセージを送信することであって、チェックポイントメッセージがプロセスについての現在の情報を記憶するための命令を含む、ことと、プロセスにおけるチェックポイントメッセージの受信時に動作をアボートし、記憶領域に対してプロセスの現在の実行状態に関する情報の記憶を開始することと、を含むことができる。コンピュータにより実施されるこの方法は、以前に記憶された初期状態又は終了状態を新しい初期状態又は終了状態で上書きすることを含むことができる。
【００１０】
第１及び第２のプロセスの各々は、プロセスのためのデータを受信しキューに入れるための１つ以上のデータキューと通信状態にある場合がある。コンピュータにより実施されるこの方法は、ネットワーク関連イベントに応答してチェックポイントメッセージを発生することを更に含むことができる。ネットワーク関連イベントはネットワークシャットダウンであることがある。コンピュータにより実施されるこの方法は、チェックポイントメッセージを定期的に発生することを含むことができる。コンピュータにより実施されるこの方法は、プロセスによって処理される受信データレコード内の又はデータレコードから導出される１つ以上のデータ値に応答してチェックポイントメッセージを生成することを含むことができる。コンピュータにより実施されるこの方法は、処理再開メッセージに含まれた情報に部分的に基づいて、保存された終了状態の１つから第１及び第２のプロセスの１つ以上の実行を再開することを含むことができる。コンピュータにより実施されるこの方法は、第１のプロセスの初期化の実質的に直後の第１のプロセスの第１の実行フェーズ中に１つ以上のメッセージを受信することと、第１のプロセスをシャットダウンして再開する必要なく、保存された初期状態から第１のプロセスの実行を再開することと、を含むことができる。
【００１１】
別の態様において、概して、コンピュータプログラムを記憶するコンピュータ読み取り可能記憶媒体は、１つ以上のタスクを実行する少なくとも第１及び第２のプロセスを含むプロセスステージを介して所定のイベントに応答してメッセージを送信することであって、メッセージが実行されている１つ以上のタスクのアボートを命令する、ことと、メッセージの受信時に、１つ以上のプロセスにより、１つ以上のタスクの実行のアボートを開始することと、をコンピューティングシステムに実行させるための命令を含む。
【００１２】
別の態様において、概して、コンピューティングシステムは、１つ以上のタスクを実行する少なくとも第１及び第２のプロセスを含むプロセスステージを介して所定のイベントに応答してメッセージを送信するように構成され、メッセージが実行されている１つ以上のタスクのアボートを命令する、デバイス又はポートと、メッセージの受信時に、１つ以上のプロセスにより、１つ以上のタスクの実行のアボートを開始するように構成された少なくとも１つのプロセッサと、を含む。
【００１３】
別の態様において、概して、コンピューティングシステムは、１つ以上のタスクを実行する少なくとも第１及び第２のプロセスを含むプロセスステージを介して所定のイベントに応答してメッセージを送信するための手段であって、メッセージが実行されている１つ以上のタスクのアボートを命令する、手段と、メッセージの受信時に、１つ以上のプロセスにより、１つ以上のタスクの実行のアボートを開始するための手段と、を含む。
【００１４】
複数の態様は以下の利点の１つ以上を含むことができる。
【００１５】
マルチプロセス処理システムにおけるプロセスは、別個の実行フェーズにおいて実行することができる。システム障害のイベントでは、処理システムを終結させて最後に完了したチェックポイントから再開することは、必要以上の量の処理時間及びリソースを消費する可能性がある。例外条件に応答して処理システムがそのアクティビティを終結させた後、処理システムは、かかるシステムの経験者である情報技術の専門家によって手作業で再初期化しなければならない場合がある。この結果、著しいシステムダウンタイムとなることがある。ある例では、システム障害を検出して専門家に通知するために別個のプロセスを設計する必要がある場合がある。このため、効率を向上させると共に処理リソースの消費を軽減するため、処理システム内のプロセスは、プロセスに対する接続障害の復元時に、システム全体を再開するのではなく、最後に記録したチェックポイントから実行することができる。１つの実施においては、システム全体を終結させて再開するのではなく、接続障害が復元されるまで処理を中断することをシステム内の個々のプロセスに通知することができる。
【００１６】
本発明の他の特性及び利点は、以下の記載から及び特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【００１７】
【図１】マルチプロセスデータ処理システムのブロック図である。
【図２】例示的なマルチプロセスデータ処理システムを示す。
【図３】例示的なマルチプロセスデータ処理システムを示す。
【図４】例示的なチェックポインティングプロセスを示すフローチャートである。
【図５】例示的な回復機構のフローチャートである。
【図６】例示的な回復機構のフローチャートである。
【発明を実施するための形態】
【００１８】
図１を参照すると、データ処理システム１００は、データを処理するために合理的に配置された多数のプロセスを提供する。例示的なシステム１００内で、データは、データソース１０２（例えばウェブサーバとして機能するサーバ１０４上で実行されているアプリケーション）から受信される。そして、データは、コンピュータシステム１０８上で実行されているか又は分散して（例えば２つ以上のネットワーク化コンピュータ端末によって）実行されているマルチプロセスデータ処理モジュール１０６に伝達される。データ処理モジュール１０６は、システム１００のデータ処理の側面を監視し、制御し、実行する。かかる処理を提供するため、データ処理モジュール１０６は、１つ以上のプロセス１１６、１１８による処理対象のデータを記憶することができる１つ以上のキュー１１０、１１２、１１４を含む。この例では、図示のように、データソース１０２から受信されたデータは、初期データキュー１１０に記憶され、定期的に初期プロセス１１６に与えられる。プロセス１１６は、データを処理（例えば変換、フィルタリング、内容確認等）し、処理したデータを１つ以上の下流データキュー１１２、１１２’に提供する。次のプロセス１１８、１１８’は、キュー１１２、１１２’からのデータが与えられ、他の（又は同様の）処理を実行することができ、この後でその結果を他の下流データキュー１１４、１１４’に送出する。例示するデータ処理モジュール１０６のキュー及びプロセスのレイアウトは、利用可能な多くの考えられる処理スキームの１つである。例えば、データ処理モジュール１０６は、図示するプロセスの上流、下流、又はこのプロセスとは無関係に配置することができる追加プロセス（例えば並列又は直列の実行のため）を含むことも可能である。ある例では、最後のキューセット（例えばキュー１１４及び１１４’）からのデータは、リレーショナルデータベース管理システム（ＲＤＢＭＳ）等の宛先アプリケーション１２０（又は多数のアプリケーション）に出力することができる。
【００１９】
データ処理モジュール１０６に含まれるプロセスは、外部デバイス及び／又は他の処理システム（例えばコンピュータシステム１２２）と通信状態とにすることができる。例えば、プロセスは、他のシステムからこのプロセスにメッセージを提供するＪＭＳ（Java Message Service）キューと通信状態にすることができる。ある例では、データ処理モジュール１０６内のプロセスは、（例えば外部システム１２２に配置された）１つ以上のデータベースと通信状態にすることができる。例えば、モジュール１０６は、１つ以上の現金自動預払機（ＡＴＭ）において対応する顧客のセッションから受信された情報に基づいて、銀行データベース内の顧客の金融口座に対する更新を実行することができる。
【００２０】
一例として、図２は、処理システム２００を示し、これは、遠隔で実行される処理モジュール２０２（ＡＴＭ２０４により実行される）を有する。モジュール２０２は、中央位置で処理するデータを提供するために用いられている。図示する例では、例えばＡＴＭ読み出しプロセス２０６のような初期プロセスが、ＡＴＭから（例えばトランザクションに関連付けられた）顧客の口座データを受信し、口座の詳細を認証するためにこのデータを口座確認プロセス２０８に渡すことができる。この例では、口座確認プロセス２０８は、顧客が個人識別番号（ＰＩＮ）データベース２１０に対して入力したＰＩＮを検証することができる。一旦、顧客の本人確認が認証されると、更にデータレコードを下流の残高チェックプロセス２１２に伝達することができる。プロセス２１２は、例えば識別した顧客口座の残高をチェックするために第２の異なるデータベース２１４と通信を行うことができる。更に別のトランザクションが完了した後、追加データを下流の残高更新プロセス２１６に送信することができる。プロセス２１６は、例えば顧客口座に関連付けられた残高情報を更新するために第３のデータベース２１８と通信を行うことができる。回答生成プロセス２２０では、トランザクションの出力概要を用意することができ、これを（例えば顧客に対してＡＴＭ２０４上で表示するために）出力表示プロセス２２２に提供することができる。システムレベルのモニタリング（例えばシステム品質保証）又は他の用途では、データベース２１０、２１４、及び２１８は、マスターデータサーバ２２４と通信状態にすることができる。ある実施において、データベースは、例えばスタンドアロンのコンピュータシステム２２６によって実行されてもよい。
【００２１】
かかるマルチプロセス処理システムにおけるプロセスは、別個の実行フェーズにおいて実行することができる。プロセスの実行は、別個の実行フェーズにおけるプロセス内での１つ以上のタスクの実行を含むことができる。このようなフェーズに実行をセグメント化することによって、別個の実行フェーズを、例えばデータ処理における多数の論理エンドポイント又はブレークポイントによって終結させることができる。各実行フェーズは、その実行フェーズの目的を達成するために１つ以上の処理アクションを有する場合がある。一例として、口座確認プロセス２０８は、１つ以上の方法で別個の実行フェーズで実行することができる。例えば第１の実行フェーズとして、口座確認プロセス２０８は最初に顧客から個人識別番号（ＰＩＮ）情報を受信することができる。顧客からＰＩＮ情報を受信する際の様々な処理アクションは、例えば、ＡＴＭディスプレイ上にプロンプトを表示すること、及びＰＩＮ情報のデータ入力を検証するためのルーチンを実行することを含むことができる。次の実行フェーズでは、プロセス２０８は、データベース２１０に対する接続を確立し、ＰＩＮ情報をキーとして用いて顧客のレコードを識別することができる。一旦、プロセス２０８が、顧客のレコードとのトランザクションを完了したら、データベース２１０に対する接続を終結させることができる。最後の実行フェーズでは、プロセス２０８は、前述のトランザクションに基づく結果を発生することができる。このように、これらの実行フェーズの各々は、口座確認プロセス２０８を一時的に中断及び／又は再開することができる別個の論理エンドポイント（又は処理ブレークポイント）を含む。
【００２２】
ある状況において、正常なシステム動作の過程に影響を及ぼす傾向がある１つ以上のイベントが発生することがある。かかるイベントは、処理システムに含まれるハードウェアモジュール又はソフトウェアモジュールのいずれかにより生じる例外又はエラーであり得る。例えば、ハードウェアの例外又はエラーは、１つ以上のハードウェアユニットからのリセット、割込、又は他の信号を含む場合がある。また、ゼロ除算、オーバーフロー、命令復号エラー、未定義命令等の数値的エラーについて、演算論理によって例外が発生する場合がある。ある状況では、ネットワークに接続されたデバイスに障害が発生するか又は一時的にオフラインとなり、これによってネットワーク上の他のデバイスに障害が発生することがある。１つ以上のそのようなイベントの発生に基づいて、補正アクション（例えば保守、二次システムへの切り換え等）を行うために、データベースの１つ以上の動作を一時的に停止させる必要がある場合がある。
【００２３】
動作の停止及び補正アクションを必要とする場合がある他のイベントには、データベース２１０〜２２４の１つ以上の障害の検出が含まれ得る。かかる障害は、様々な理由で発生する可能性がある。例えば、メモリ割り当てにエラーがあるか、又はメモリ空間への書き込みに競合がある場合に障害が起こり得る。また、プロセスが残高ゼロの口座から資金を引き出そうとした場合等、根本的なデータ動作のエラーでも障害が起こり得る。一時的な障害があるイベントに加えて、オペレータの介入によって誘発されるイベントによっても障害が起こり得る。ある実施では、オペレータは、障害を引き起こした状況を補正することができ、又は、システムがやがてその状況を補正する場合がある。イベントの例は、ネットワークに接続された１つ以上のデバイスの障害、保守のための１つ以上のデバイス又はソフトウェアサービスのシャットダウン、デバイス又はソフトウェアサービスの障害及び切り換え、記憶空間等のリソースの使い果たし、処理ユニットの過負荷、１つ以上のソフトウェアサービスのタイムアウトを含み得るが、これらに限られるものではない。
【００２４】
かかるイベントを検出し、これに対処するため、データ処理システムは、チェックポインティング技法と称されることが多い１つ以上の技法を用いて、障害イベントにおいて又はシステムが保守又は切り換えのためにオフラインとなった場合においてシステムダウンタイムを最小限に抑えることを保証することができる。チェックポインティング技法は、概して、プロセスの現在の状態の詳細をチェックポイントレコードとして記憶することを含み、プロセスが、後にその状態から再開するために、記憶された情報を用いることができる。例えば、口座確認プロセス２０８は、各実行フェーズの完了時に（次の実行フェーズ又は他の処理の実行を開始する前に）チェックポイントレコードにその現在の状態を保存することができる。
【００２５】
チェックポイントレコードは、プロセス値、処理が成功したレコードに関する情報、及びプロセスの現在の実行フェーズに関連した他の詳細等、様々なタイプの情報を含むことができる。例えばチェックポイントレコードは、データが処理されているデータキュー（例えば図１のデータキュー１１２）内の現在の位置に関する情報を含むことができる。このため、動作の停止後、このキュー位置から処理を再開することができる。これによって、システム障害からの回復後、プロセスは、初期状態から再開するのではなく、記憶した中間チェックポイントから再開することができる。
【００２６】
一例として、ＰＩＮデータベース２１０に障害が発生した場合、口座確認プロセス２０８は例外を生じて処理システム全体を終結させることができる。再開時、処理システム内のプロセス（又はプロセスの一部）は、最後のチェックポイント状態から処理を継続することができる。この例では、顧客が自身のＰＩＮ情報を提供した後の時点で、障害及び再開が発生するので、ＰＩＮ情報はプロセスに復元され、顧客からＰＩＮ情報を再収集する必要はない。従って、顧客にＰＩＮ情報を提供するように再び要求する必要をなくすことができる。
【００２７】
一例として、ＰＩＮデータベース２１０が障害した場合、口座確認プロセス２０８は例外を生じて処理システム全体を終結させることができる。再開時、処理システム内のプロセス（又はプロセスの一部）は、最後のチェックポイント状態から処理を継続することができる。この例では、カスタマが自身のＰＩＮ情報を提供した後の時点で障害及び再開が生じるので、ＰＩＮ情報はプロセスに復元され、カスタマから再収集する必要はない。従って、カスタマにＰＩＮ情報を提供するように再び要求する必要をなくすことができる。
【００２８】
システム障害のイベントでは、処理システムを終結させ、最後に完了したチェックポイントから処理システムを再開することは、必要以上の量の処理時間及びリソースを消費する可能性がある。例外条件に応答して処理システムがそのアクティビティを終結させた後、処理システムは、かかるシステムの経験者である情報技術の専門家によって手作業で再初期化しなければならない場合がある。この結果、著しいシステムダウンタイムとなることがある。ある例では、システム障害を検出して専門家に通知するために、別個のプロセスを設計することを必要とすることがある。チェックポインティングシステムの例は、「Continuous Flow Checkpointing Data Processing」と題する米国特許第６，５８４，５８１号、「Overpartitioning system and method for increasing checkpoints in component-based parallel applications」と題する米国特許第５，８１９，０２１号、及び「Methods and Systems for Reconstructing the State of a Computation」と題する米国特許第５，７１２，９７１号に記載されている。これらの各々の内容はその全体が本願にも含まれるものとする。
【００２９】
効率を向上させると共に処理リソースの消費を軽減するため、プロセスは、接続障害の復元時に、システム全体を再開するのではなく、最後に記録したチェックポイントから実行する。１つの実施においては、システム全体を終結させて再開するのではなく、接続障害が復元されるまで処理をアボート（abort）することをシステム内の個々のプロセスに通知することができる。
【００３０】
図３は、マルチプロセスシステム３００のブロック図を示す。システム３００は、データソースプロセス３０２、プロセス３０４ａ〜ｎ、データシンクプロセス３０６、及び他のプロセス（プロセス３０２、３０４ａ〜ｎ）の各々と通信状態にあるフォルトトレランスマネージャ３０８を含む。ある実施において、フォルトトレランスマネージャ３０８は、マルチプロセスシステム３００内の別のプロセスとして実行することができる。ある状況では、フォルトトレランスマネージャ３０８は、別個のコンピュータシステム（図示せず）上で実行しているか又はチェックポイントプロセッサ等の専用プロセッサで実行されているアプリケーションであってもよい。チェックポイントプロセッサは、例えば「Continuous Flow Checkpointing Data Processing」と題する米国特許第６，５８４，５８１号に記載されている。その内容は全体が本願にも含まれるものとする。
【００３１】
１つ以上の技法を実施して、プロセス３０２〜３０６とフォルトトレランスマネージャ３０８との間の通信を確立することができる。例えば、プロセス３０２〜３０６で発生し得る例外条件に関する情報を伝達するために、個々の例外チャネル３１０ａ〜ｎを用いることができる。チャネル３１０ａ〜ｎは、有線、無線、又は有線及び無線を組み合わせたネットワークシステムの一部とすることができる。チャネル３１０ａ〜ｎは、プロセス３０２〜３０６により用いられて、プロセス３０２〜３０６に関するエラー情報をフォルトトレンランスマネージャ３０８に伝達することができる。例えば、プロセス３０４ａと通信状態にある外部デバイスに障害が発生した場合、プロセス３０４ａは直ちにエラーフラグを立てて、このエラーを、例外チャネル３１０ｂを介してフォルトトレランスマネージャ３０８に伝達することができる。
【００３２】
例外チャネル３１０ａ〜ｎに加えて、フォルトトレランスマネージャ３０８は、対応する通信チャネル３１２ａ〜ｅを介してプロセス３０２〜３０６にコマンドメッセージ（例えばアボート／中断コマンドメッセージ及びチェックポイントコマンドメッセージ）を送信することができる。通信チャネル３１２ａ〜ｅは、フォルトトレンランスマネージャ３０８からのコマンドメッセージをプロセス３０２〜３０６の各々に順次送信するように構成されている。例えば、フォルトトレンランスマネージャ３０８からのメッセージは、最初にデータソースプロセス３０２に伝達され、次いでチャネル３１２ｂ〜ｄを介して各々のプロセス３０４ａ〜ｎ及びデータシンクプロセス３０６にシリアルに送ることができる。データシンクプロセス３０６は、チャネル３１２ｅを用いてコマンドメッセージをフォルトトレンランスマネージャ３０８に伝達することができる。
【００３３】
プロセス３０４ａは、（コンピュータシステム３２０上で実行される）外部データベース３１８と更に通信状態にすることができる。時に、データベース３１８に対する接続に障害が発生する場合があり、又はデータベース３１８が保守のためにオフラインとなる場合がある。この障害は、データベース３１８を実行しているコンピュータシステム３２０のハードウェア障害であり得る。かかる状況では、プロセス３０４ａは例外チャネル３１０ｂを介してエラーフラグを立てて、接続が失われたことをフォルトトレランスマネージャ３０８に通知することができる。
【００３４】
エラーの通知を受信すると、フォルトトレンランスマネージャ３０８は、アボートコマンドメッセージ３３２を生成して、これをプロセス３０２〜３０６を介して伝搬させることができる。ある実施では、アボートコマンドメッセージ３２２は、各々のプロセス３０２〜３０６に、動作を中断して進行中のあらゆる作業をアボートすることを通知する。アボートコマンドメッセージ３２２は、プロセスに現在の処理をアボートさせる特別なメッセージパケットとすることができる。
【００３５】
アボートメッセージは、典型的に、最初にチャネル３１２ａによってデータソースプロセス３０２に伝達され、次いでチャネル３１２ｂ〜ｄによってプロセス３０２〜３０６の各々に送られ、最後にチャネル３１２ｅによってフォルトトレンランスマネージャ３０８に戻される。各々のプロセス３０２〜３０６は、アボートメッセージ３２２を受信すると、（もしあれば）比較的小さい遅延でその現在のアクティビティをアボートし、最後のチェックポイント状態の後に処理されたかもしれない未完了のタスク又はレコードを流す（ｆｌｕｓｈ）／処分する。プロセスは、アクティビティをアボートした後、アボートメッセージ３２２を次の下流プロセスに渡すことができる。このように、アボートメッセージ３２２は、シンクプロセス３０６まで伝搬し、その後でフォルトトレンランスマネージャ３０８に戻される。フォルトトレンランスマネージャ３０８は、シンクプロセス３０６からアボートメッセージ３２２を受信するまで待機し、これによって、プロセス３０２〜３０６の全てが現在の処理タスクをアボートした（例えば休止状態にある）ことを確実とする。
【００３６】
コンピュータシステム３２０におけるハードウェア障害のためにデータベース３１８に障害が発生した状況では、プロセス３０２〜３０６は、処理をアボートするように指示される。ある実施では、システムがその処理を完全にアボートした後、プロセス３０２は、指定可能な時間量（障害を補正するために要する平均時間量を反映するはずの時間）だけ待機し、最後に保存されたチェックポイント状態から再び処理を開始する。ある実施では、プロセス３０４ａは、定期的にデータベース３１８をポーリングして、そのステータスをチェックする（すなわちデータベース３１８が動作可能であるか否かをチェックする）ことができる。ある例では、コンピュータシステム３２０は、データベース３１８が動作可能状態に復元された場合にプロセス３０４ａに自動的に通知するように構成することができる。処理システム３００は、データベース３１８との接続が復元されると、最後に保存されたチェックポイント状態から再び処理を開始することができる。
【００３７】
この点に関して、プロセス３０４ａは、フォルトトレンランスマネージャ３０８に接続が復元されたことを通知する。フォルトトレンランスマネージャ３０８は、各々のプロセス３０２〜３０６について最後に正常に完了したチェックポイント状態を判定し、各々のプロセス３０２〜３０６に処理再開メッセージ（図示せず）を送信する。他のコマンドメッセージと同様に、処理再開メッセージは通信チャネル３１２ａ〜ｅを介して各々のプロセス３０２〜３０６に順次伝搬する。
【００３８】
ある実施において、処理再開メッセージは、プロセス３０２〜３０６が処理を再開するチェックポイント状態を指定する。チェックポインティングは、多数のチェックポイント状態を各記憶領域に記憶することを伴う。各々のプロセス３０２、３０４ａ〜ｎ、３０６に関連付けられた各チェックポイント状態データを記憶するため、各プロセスに記憶領域（例えばメモリ）を割り当てることができる。各プロセスは、別個の実行フェーズの終了時に、その現在の動作を定期的に中断し、そのチェックポイントデータを関連付けられた記憶領域に記憶する。例えば、データソースプロセス３０２は、処理における別個の実行フェーズの終了時に（受信データのストリームにおける論理ブレークポイント等）、その現在の動作を定期的に中断することができ、チェックポイント情報を記憶領域３１１に記憶する。このように、各々のプロセス３０２、３０４ａ〜ｎ、３０６が実行されると、対応する記憶領域３１１、３１４ａ〜ｎ、及び３１６は、定期的にチェックポイントデータを保存する。チェックポイントデータは、現在の状態に関する情報及び／又はプロセス３０２〜３０６に関連付けられたデータを含んで、後の時点でそれらの状態の再構築を可能とすることができる。記憶領域３１１〜３１６は、例えば磁気媒体のような不揮発性記憶等、ハードディスクドライブ等の様々なタイプの記憶技法によって実施することができる。
【００３９】
フォルトトレンランスマネージャ３０８は、チェックポイントコマンドメッセージ（図示せず）を生成し、通信チャネル３１２ａ〜ｅを介して各プロセス３０２〜３０６に順次送ることによって、チェックポインティング動作を管理する。チェックポイントコマンドメッセージングシステムに関する記載は、同時係属中の米国特許出願第１３／０３０，９９８号に更に詳細に与えられている。その内容は参照により全体が本願にも含まれるものとする。チェックポイントコマンドメッセージは、各プロセス３０２〜３０６を通るので、プロセスは、メッセージを受信するとその現在の状態のチェックポイントを行うことができる。このように、チェックポイントコマンドメッセージは、データソースプロセス３０２に伝わり、次いで各プロセス３０４ａ〜ｎ及びデータシンクプロセス３０６を順次通り、その後でフォルトトレンラスマネージャ３０８に戻される。このチェックポインティング動作は、一定間隔で自動的に開始することができる。例えばフォルトトレランスマネージャ３０８は、例えば５分ごと等の所定の定期的なペースでチェックポイントコマンドメッセージを送信することができる。定期的なペースは、デフォルト値に設定することができ、又はユーザにより調節することも可能である。ある例では、１つ以上の外部トリガが、チェックポイント情報を記憶するための動作を開始することができる。一例では、ネットワークメッセージが、フォルトトレランスマネージャ３０８に、今にも起こりそうなネットワークシャットダウンを通知し、これによってチェックポインティング動作をトリガすることができる。ある実施では、チェックポインティング動作は、処理しているデータレコード内の又はそれから導出される値に応答してトリガすることができる。例えば、処理済みデータレコードは、チェックポインティングを実行することができる論理ポイントと考えられるタイムスタンプ又はブレークポイント値を含むことができる。
【００４０】
システムによってデータを処理している期間中にチェックポイント情報を記憶することに加えて、データ処理の前に情報を記憶することが可能である。１つの実施では、マルチプロセスシステム３００が最初に初期化された時、例えば起動中に、初期チェックポインティング動作をトリガすることができる。フォルトトレランスマネージャ３０８は、各々のプロセス３０２〜３０６を経るように初期チェックポイントコマンドメッセージを送ることができる。図３に示す例では、初期チェックポイントメッセージは、最初にデータソースプロセス３０２に伝達される。データソースプロセス３０２は、直ちにチェックポイントを行う。例えば、その初期状態を表すデータを関連付けられたデータ記憶空間３１１に記憶し、初期チェックポイントメッセージを下流の次のプロセス３０４ａに渡す。この初期チェックポイント状態をチェックポイント状態ゼロと称する。
【００４１】
同様に、シリアルに、各々のプロセス３０４〜３０６は、その初期状態及び関連付けられたデータ値を適切な記憶領域にチェックポイント状態ゼロとして同様に記憶することができる。例として、初期状態及び関連付けられたデータ値は、グローバル変数の初期値、参照データ情報、及びカウンタの初期値を含む監査変数（auditing variables）を含むことができる。
【００４２】
各々のプロセス３０２〜３０６が、その初期状態を記憶した後、初期チェックポイントコマンドメッセージは、チャネル３１２ｅを介してフォルトトレンランスマネージャ３０８に戻される。プロセス３０２、３０４ａ〜ｎ、３０６を通って一周した後にメッセージをフォルトトレンランスマネージャ３０８に戻すことに基づいて、フォルトトレランスマネージャは、プロセス３０２〜３０６がチェックポイント状態ゼロを完了したことを通知される。ある実施では、下流プロセスが現在の状態を保存している間、ソース及び他の上流プロセスは、全てのプロセスが状態を保存するのを待つことなく、データの受信及び他の機能の実行を続けることができる。
【００４３】
同様に、プロセス３０２〜３０６の各別個の実行フェーズについて、追加のチェックポインティングを実行可能である。このため、初期チェックポイント情報を表すデータを記憶することに加えて、フォルトトレンランスマネージャ３０８は、例えば以降のチェックポイントサイクル（例えばチェックポイント状態１、２、３、．．．ｎ）に関連付けられた情報を表す追加情報の記憶を開始することができる。以降のチェックポイント情報の記憶を開始するため、プロセス３０２、３０４ａ〜ｎ、３０６に更に別のチェックポイントコマンドメッセージを伝搬する等の技法を利用することができる。チェックポイントコマンドメッセージを受信すると、プロセス３０４ａは進行中のタスクを完了するか、又は未完了のタスクを中断することができる。ある例では、プロセス３０４ａは、データ記憶３１４に記憶された以前に生成したチェックポイントレコードを削除し、記憶空間を取り戻すことができる。次いでプロセス３０４は、その現在の状態及び関連付けられたデータのための新しいチェックポイントレコードを生成することができる。ある状況では、チェックポイントレコードは、メモリに永続的に記憶されるか、又は新しいチェックポイントレコードによって上書きされる。チェックポインティングレコードに記憶される情報の更に別の例が米国特許第６，５８４，５８１号に与えられている。その内容は全体が本願にも含まれるものとする。
【００４４】
ある例では、フォルトトレンランスマネージャ３０８は、前のチェックポインティング動作が現在実行されている間に追加のチェックポインティング動作を開始することができる。例えば、プロセス３０４ｎが任意のチェックポイント状態（例えばチェックポイントコマンドメッセージＮに対応するチェックポイントＮ）を処理している間に、フォルトトレンランスマネージャ３０８は、次のチェックポイントコマンドメッセージＮ＋１を生成してソースプロセス３０２に送信することによって次のチェックポイント状態（例えばチェックポイント状態Ｎ＋１）を開始することができる。これによって、チェックポイントコマンドメッセージＮがまだプロセス３０２〜３０６を伝わっている時に、新しい次のチェックポイントコマンドメッセージＮ＋１を生成してプロセス３０２〜３０６に送信することができる。このように、フォルトトレンランスマネージャ３０８によって、前のチェックポインティング状態が完了するまで待つ必要なく、プロセス状態のチェックポインティングの頻度を高くすることができる。
【００４５】
ある状況では、１つ以上のチェックポイントコマンドメッセージがプロセス３０２、３０４ａ〜ｎ、３０６を移動している間にシステム障害が発生し得る。例えば、フォルトトレンランスマネージャ３０８が、チェックポイントコマンドメッセージＮを発生することでチェックポイント状態Ｎを開始したという状況について考える。チェックポイントコマンドメッセージＮがプロセス３０２〜３０６により処理されている間、プロセスの１つ（例えばプロセス３０４ａ）と外部システム（例えばデータベース３１２）との間の接続に障害が発生する場合がある。この状況が警告されると、フォルトトレンランスマネージャ３０８は、これに応答して、プロセス３０２〜３０６にアボートコマンドメッセージ３２２を渡すことができる。アボートコマンドメッセージ３２２は、まだチェックポイント状態Ｎを処理している（例えばチェックポイントＮに関連付けられたチェックポイント情報を記憶している）プロセス（例えばプロセス３０４ｎ）に到達することができる。アボートコマンドの受信に基づいて、プロセス３０４ｎは、１つ以上のアクションを実行することができる。例えばプロセス３０４ｎは、チェックポイント状態Ｎを完了させ、全ての更に別の処理をアボートすることができる。別の状況では、プロセス３０４ｎは、前のチェックポイント状態Ｎ−１以後の現在の状態及び以降の状態に関連付けられた結果を処分し、更に別の処理をアボートすることができる。この結果、システム３００が休止となった場合、各々のプロセス３０２〜３０６は、異なるチェックポイント状態にあることがある。例えば、プロセス３０４ｎの上流にある全てのプロセス（例えばデータシンクプロセス３０６）は、チェックポイント状態Ｎを完了しており、一方でプロセス３０４ｎの下流にある全てのプロセス（例えばプロセス３０４ａ及びデータソースプロセス３０２）は、チェックポイントＮ−１のみを完了している場合がある。
【００４６】
システム３００が処理を再開する準備ができたら、フォルトトレンランスマネージャ３０８は、通信チャネル３１２ａ〜ｅを介して各プロセスに１つ以上の処理再開メッセージを送信する。処理再開メッセージは、プロセスに対して、それらが実行するべきである最も早い完全にコミットされた（又は完了した）チェックポイントされた状態（例えばチェックポイント状態Ｎ−１）を示す。ある例では、すでにチェックポイント状態Ｎを完了したプロセスは、チェックポイント状態Ｎ−１からチェックポイント状態Ｎへ、その結果を単に再現することができる。このように、プロセス３０２〜３０６は以前の作業の繰り返しを回避することができる。ある例では、チェックポイント状態Ｎ−１からチェックポイント状態Ｎへの結果の再現は、２つのチェックポイント状態間に発生したかもしれない以前の処理アクションの結果を再現することを含む。
【００４７】
例として、実質的に起動直後に、システム障害が発生することがある。かかる状況では、プロセス３０２〜３０６の多くがチェックポイント状態ゼロのみを完了している場合がある。これらのプロセス３０２〜３０６は、対応するチェックポイントレコードに記憶された初期化データ及び起動値に基づいてチェックポイント状態ゼロから処理を再開することができる。
【００４８】
図４は、マルチプロセスシステム内のプロセス（例えば図３のプロセス３０２）の例示的な実行を示すフローチャートである。起動時に、プロセスはその初期状態をチェックポイント状態ゼロとしてデータ記憶部に直ちに記憶する（ステップ４０２）。プロセスは次いで別個の実行フェーズ（例えば実行フェーズ１、２、．．．Ｎ−１）で実行することができる。各実行フェーズの完了時に、プロセスはその終了状態をチェックポイント状態としてデータ記憶部に保存することができる。例えば第１の実行フェーズ後、プロセスは、第１の実行フェーズの終了状態をチェックポイント状態１として保存することができる（ステップ４０４）。同様に、以降の実行フェーズ後、プロセスは、実行フェーズの終了状態をチェックポイント状態２、．．．Ｎ−１、及びＮとして保存することができる（ステップ４０６〜４１０）。
【００４９】
図５は、プロセスの実行中にチェックポイントを記憶し、このチェックポイントから再開する際に実行される例示的なステップを示すフローチャートである。例えば、プロセスの初期化時に、プロセスの初期状態に関する情報が、関連付けられた記憶領域に記憶される（ステップ５０２）。次いでプロセスは、別個の実行フェーズで実行される。このため、各実行フェーズの終了時に、プロセスは、実行フェーズの終了状態を表す情報を記憶する（ステップ５０４）。所定のイベントが発生すると、例えば外部デバイスに対する接続が失われると（ステップ５０８）、プロセスの実行がアボートされる（ステップ５０６）。その間、プロセスは、中断をトリガしたイベントがクリアされた（例えば外部デバイスに対する接続の復元）か否かを調べるためにチェックを行う。この時間中、プロセスは、シャットダウンされず、イベントがクリアされたと見なされるまで処理がアボートされる。プロセスの実行は、最後に保存された初期状態又は終了状態から再開される（ステップ５１０）。
【００５０】
図６は、外部システムに障害が発生したか又は保守のためにオフラインとなった場合に実行される例示的なステップを示すフローチャートである。例えば、外部システムは、処理システム内のプロセスと通信状態にあるデータベース（例えば図３のデータベース３１２）であってもよい。外部システムが保守のためにオフラインとなるか又はこれに障害が発生すると、例えば障害が発生した外部システムと通信状態にあるプロセスによって、エラーフラグが立てられる（ステップ６０２）。エラーフラグに応答して、アボートメッセージ（例えば図３のアボートコマンドメッセージ３２２）が生成され、プロセスを介して伝搬される（ステップ６０４）。かかるメッセージ送信には１つ以上の技法を用いることができる。例えば、異なる送信経路及び異なるタイプのメッセージ又はメッセージの組み合わせを実施可能である。プロセスが、アボートコマンドメッセージを受信すると、各プロセスの現在のアクティビティがアボートされる（ステップ６０６）。かかるプロセスをアボートするために１つ以上の技法を用いることができる。アボート処理は、１つ以上の機能の実行を含むことができ、例えば、最後のチェックポイント状態以降に実行されたあらゆるトランザクションをプロセスによって処分することができる。外部システムに対する接続障害が復元されるまで、更に別のアクションは、アボートされる（ステップ６０８）。接続が復元されると、処理再開メッセージが、各プロセスに送信される（ステップ６１０）。処理再開メッセージは、プロセスが処理を再開するべきであるチェックポイント状態を示す。このため、各プロセスは、関連付けられた記憶領域からチェックポイント状態に関する関連情報を検索する（ステップ６１２）。
【００５１】
上述のプロセスの再開は、コンピュータ上で実行するためのソフトウェアを用いて実施可能である。例えばソフトウェアは、１つ以上のプログラミングされたか又はプログラマブルなコンピュータシステム（これは、分散型、クライアント／サーバ、又はグリッド等の様々なアーキテクチャのものであり得る）で実行する１つ以上のコンピュータプログラムにおいて手順を形成し、その各々のコンピュータシステムは、少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性及び不揮発性メモリ及び／又は記憶要素を含む）、少なくとも１つの入力デバイス又はポート、及び少なくとも１つの出力デバイス又はポートを含む。ソフトウェアは、例えばデータフローグラフの設計及び構成に関連した他のサービスを提供するもっと大型のプログラムの１つ以上のモジュールを形成することができる。グラフのノード及び要素は、コンピュータ読み取り可能媒体に記憶されたデータ構造又はデータレポジトリに記憶されたデータモデルに合致する他の組織化データとして実施することができる。
【００５２】
ソフトウェアは、汎用又は特殊目的のプログラマブルコンピュータによって読み取り可能なＣＤ−ＲＯＭ等の記憶媒体上で提供するか、又はソフトウェアが実行されるコンピュータに対するネットワークの通信媒体を介して送出する（伝搬信号に符号化されている）ことができる。機能は全て、特殊目的コンピュータ上で、又はコプロセッサ等の特殊目的ハードウェアを用いて実行可能である。ソフトウェアは分散型で実施して、ソフトウェアによって指定される計算の異なる部分を異なるコンピュータによって実行することができる。そのような各コンピュータプログラムは、好ましくは、汎用又は特殊目的のプログラマブルコンピュータによって読み取り可能な記憶媒体又はデバイス（例えば固体メモリもしくは媒体、又は磁気もしくは光媒体）上に記憶するか又はこれにダウンロードして、この記憶媒体又はデバイスがコンピュータシステムによって読み出されて本明細書に記載した手順を実行する場合にコンピュータを構成し動作させる。また、本発明のシステムは、コンピュータプログラムを用いて構成されるコンピュータ読み取り可能記憶媒体として実施されるものとして考えることができ、そのように構成された記憶媒体によってコンピュータシステムは特定の既定の方法で動作して本明細書に記載された機能を実行する。
【００５３】
本発明の多数の実施形態について記載した。しかしながら、本発明の精神及び範囲から逸脱することなく様々な変形を実施可能であることは理解されよう。例えば、上述のステップのいくつかは順序に依存せず、従って記載したものとは異なる順序で実行可能である。
【００５４】
前述の記載は、添付の特許請求の範囲によって規定される本発明の範囲を例示することを意図しており、これを限定することは意図していないことは理解されよう。例えば、上述の多数の機能ステップは、全体的な処理に著しい影響を及ぼすことなく異なる順序で実行可能である。他の実施形態も以下の特許請求の範囲内にある。
【図１】
0006377703.tif 000002
【図２】
0006377703.tif 000003
【図３】
0006377703.tif 000004
【図４】
0006377703.tif 000005
【図５】
0006377703.tif 000006
【図６】
0006377703.tif 000007