JP5128944B2 - コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム - Google Patents

コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム Download PDF

Info

Publication number
JP5128944B2
JP5128944B2 JP2007522598A JP2007522598A JP5128944B2 JP 5128944 B2 JP5128944 B2 JP 5128944B2 JP 2007522598 A JP2007522598 A JP 2007522598A JP 2007522598 A JP2007522598 A JP 2007522598A JP 5128944 B2 JP5128944 B2 JP 5128944B2
Authority
JP
Japan
Prior art keywords
fault
computer application
application
failure
potential
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.)
Active
Application number
JP2007522598A
Other languages
English (en)
Other versions
JP2008507767A5 (ja
JP2008507767A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008507767A publication Critical patent/JP2008507767A/ja
Publication of JP2008507767A5 publication Critical patent/JP2008507767A5/ja
Application granted granted Critical
Publication of JP5128944B2 publication Critical patent/JP5128944B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • 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
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • 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/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Description

関連出願との相互参照
本出願は、2004年7月20日出願の米国仮特許出願第60/589,262号に基づき優先権主張するものであり、その内容は引用により本明細書に含まれるものである。
本発明は、一般的には、コンピュータソフトウェアアプリケーションのフォルトトレランスに関し、さらに、個々のアプリケーションがプログラミングの対象となっていなかったか、あるいは意図していなかった障害発生のシナリオにおいてその操作を可能にする方法とシステムに関する。
コンピュータシステムおよびソフトウェアアプリケーションはますます複雑化し、分散化されている。これらの要因のどちらも、データ損失という共通問題を引き起こす原因になっている。エンドユーザがソフトウェアアプリケーションを操作するとき、その操作の結果を1または2以上のデータファイル内やデータベースに、あるいは他の場所に保存しておくのが普通である。これらの操作をコミットするアクションを行なうと、実効的にチェックポイント(checkpoint)として働くステート変化(state changes)がシステム内に引き起こされる。アプリケーションプログラマは、自分のソフトウェアプログラムがこれらのチェックポイントで意図した通りに実行されることを保証し、その変化をコミットまたは拒絶するのに大量の時間を費やしている。
しかし、ステート変化がこれらのチェックポイントとチェックポイントの間に累積していくことも普通になっている。大部分のソフトウェアアプリケーションでは、コミットとコミットの間に大量の時間が経過するか、あるいは操作が行なわれることがある。このインターバル期間にアプリケーションに障害が起こったとき、ユーザによってとられたアクションが失われて、最後のチェックポイントに戻されることがある。この場合、ユーザはアプリケーションを再オープンし、表示可能なステートを調べてなにが失われたかを把握し、とられたアクションを再現する必要がある。
アプリケーション障害は、ネットワーク障害、ハードウェア障害、サーバまたはシステムの障害、あるいは他の操作上の瞬間的異常(operating glitches)といった、いくつかの理由で発生する可能性がある。新しいソフトウェアモードでは、ユーザがラップトップや他のモバイルデバイスをネットワークから切り離したり、あるいはアプリケーションがストリーム化されるか、クライアントコンピュータにばらばらに(in pieces)配信されたりするので、障害が発生する可能性が増加している。多くのアプリケーションは、ネットワークから切り離されている間も操作される設計にも、プログラムとその資産(assets)全体がランタイム(at runtime)に存在しなくても操作される設計にもなっていない。
アプリケーションを書き直したり、あるいはすべての形体の障害を考慮に入れたりすると、コスト的にも時間的にも高くつくので、そのようにしなくても、上記障害や他の形体の障害を受容または解消することによって、チェックポイント個所の作業損失だけでなくチェックポイントとチェックポイントの間の作業損失もなくす手段が望まれている。
どのソフトウェアアプリケーションに修正を加えなくても、あるいはソフトウェアアプリケーションのコードや設計にアクセスしなくても、望みの障害許容力(resiliency−フォルトトレランス)が得られるようにする、単純で汎用目的のメソッド群が提案されている。
特定のアプリケーションまたは目的のために設計時に、この問題の解決を行なうためのメソッドが提案されている。そのようなメソッドとしては、特許文献1に開示されているものがある。特許文献2には、アプリケーション開発者が使用するために作成されたフォルトトレラントルーチンのライブラリが開示されている。特許文献2の方法によれば、アプリケーションをフォルトトレラントになるように設計し、構築する必要のある制約は、上記ライブラリの使用によって解消されている。また、この発明によれば、過去、現在および将来のソフトウェアシステムの多くの要求条件を処理するための拡張可能なソリューションフレームワークが提供されている。
米国特許第6,014,681号(Walker他)、発明の名称「バックグラウンド保存スレッドを使用してドキュメントを保存する方法(Method for Saving a Document Using a Background Save Thread)」 米国特許第5,748,882号(Huang)、発明の名称「フォルトトレラントコンピューティングのための装置と方法(Apparatus and Method for Fault−Tolerant Computing)」
本発明は、障害または潜在的障害がコンピュータアプリケーションで発生したときのデータ損失を防止または最小限にする方法とシステムを提供することを課題にしている。本発明の方法とシステムによれば、使用中のアプリケーションのコードに修正を加えなくても、あるいはコードにアクセスしなくても、データ損失を最小限にし、あるいは防止することを可能にしている。
本発明では、ターゲットコンピュータ上で実行中のプライマリアプリケーション(primary application)をモニタして、プライマリアプリケーションにおける障害または潜在的障害の存在を検出するためのヘルパ(helper)アプリケーションが用意されている。障害が検出されると、ヘルパアプリケーションは、その障害を処理するためのメソッドを選択し、そのあと選択したメソッドを実行する。
ヘルパアプリケーションは、プライマリアプリケーションへのコールをインターセプト(intercept)し、そのコールの結果を調べることによってプライマリアプリケーションをモニタしている。ヘルパアプリケーションは、アプリケーションの内部オペレーション(ロジック障害など)および/または外部オペレーション(ネットワーク接続性(network connectivity)の損失、アプリケーションによって要求された外部サービスの障害、接続デバイスの障害、およびピアまたはサーバネットワークの障害など)をモニタしている。
障害が特定されると、ヘルパアプリケーションはどの障害ハンドラ(fault handler)が最も適しているかを判断する。本発明の好適実施形態では、障害ハンドラとしてリダイレクションハンドラ(redirection handler)、一時中止ハンドラ(suspending handler)およびスナップショットハンドラ(snapshot handler)が用意されている。システムは、異なる目的別に異なるハンドラがいくつでも利用できるように拡張可能になっている。その他のハンドラの例としては、自動リスタートハンドラ(automatic restart handler)または巻き戻しハンドラ(rewinding handler)がある。
リダイレクションハンドラが選択された場合は、リダイレクションハンドラは、プライマリアプリケーションの保存ロジックを起動(invoke)する。保存ロジックは、(a)プライマリアプリケーションの保存エントリポイントを直接にコールするか、(b)プログラムカウンタを保存エントリポイントにリセットするか、あるいは(c)保存のコールを強行するためにジャンプ命令を挿入することにより起動することができる。
一時中止ハンドラが選択された場合は、一時中止ハンドラはアプリケーションを一時中止し、再開が可能であるとの通知を待つ。この通知を受けると、一時中止ハンドラは、(a)プライマリアプリケーションを再開するか、(b)プライマリアプリケーションのプログラムカウンタをリセットするか、あるいは(c)障害を起こした元のAPIを再起動する。一時中止ハンドラは、あらかじめ決めた手段を通してのみプライマリアプリケーションを制御可能にすることにより、プライマリアプリケーションが一時中止されている間にプライマリアプリケーションが偶発的に再開されるのを防止する。プライマリアプリケーションは障害が持続している間一時中止させることができるが、障害ステートを予想してユーザインタフェースによって一時中止させることも可能である。
スナップショットハンドラが選択された場合は、スナップショットハンドラは、プライマリアプリケーションに障害または潜在的障害が存在することに応答してプライマリアプリケーションのプロセスとスレッドを一時中止する。そのあと、スナップショットハンドラはプライマリアプリケーションのメモリスナップショットをとり、そのメモリを不揮発性ストレージ(non−volatile storage)にストアし、起動時にプライマリアプリケーションをリストアする。スナップショットハンドラは、障害がクリアされるか、あるいはユーザによって明示的に確認されるまでプライマリアプリケーションが再起動されるのを防止する。
上述した実施形態では、ヘルパアプリケーションは処理する障害別に分類すると共に、起動できるハンドラ別に分類している。このことは、種々の手法を通してオフラインまたはオンラインでシステムに知らせることができる。最も基本的なシステムでは、ハンドラはすべての障害を検出するように単に登録されるだけである。
本発明の別の側面によれば、追加のステップとして、プライマリアプリケーションコードについてスタティック分析(static analysis)が行なわれ、その構成だけでなく障害を引き起こす潜在性も判断されると共に、「保存」または「終了(exit)」といった共通プログラムエントリポイントが判断される。分析が完了したあと、アナライザは、回復可能な障害と回復可能でない障害および推奨処理方法のリストを提示することができる。どちらの障害群の場合も、障害ハンドラを構成するためのアクションを禁止することができる。回復可能でない障害の場合は、リダイレクションハンドラが使用されるのが普通である。「保存」コードが存在しないか、あるいは特定できない場合は、データが必ずしも保存されないことがあっても、安全に終了するだけで済むようにシステムをセットアップすることができる。
プログラムエントリポイントを分析するために、ヘルパアプリケーションは、ソースを見つけるためにプラットフォーム知識を使用することができる。代替実施形態では、障害とエントリポイントは、ダイナミック分析(dynamic analysis)を使用して特定することができる。従って、これらのシグネーチャ(signature)を特定するためにその実行中にプログラムをトレースすることができる。
ソフトウェアアプリケーション100は、図1に示すようにターゲットコンピュータ101上で実行されている。ヘルパアプリケーション102は同じコンピュータ上で同時並行に実行されているが、その全体または一部を代替コンピュータ103上にサービスプログラムとして置いておくことも可能である。このヘルパアプリケーション102はスタンドアロンプロセスとしても、プライマリアプリケーションのメモリ空間に入れておくことも、あるいはコンピュータのオペレーティングシステムの一部としても、デバイスドライバとしても、その他としても置いておくことができる。プライマリアプリケーション100はコンパイルし直す必要もなければ、修正する必要もない。プライマリアプリケーション100はスタンドアロンプログラムとして置いておくことも、ナットワーク内の1または2以上のピア(peer)またはサーバコンピュータと通信するように置いておくこともできる。
図2を参照して説明すると、ヘルパアプリケーション102は障害ディテクタ(fault detector)201、障害ハンドラ(fault handler)202、および知識ベース(knowledge base)203を含んでいる。プライマリアプリケーション100が実行されると、傷害ディテクタ201はプライマリアプリケーション100をモニタして、障害の存在を検出することを試みている。障害検出はプライマリアプリケーション100の内部オペレーションに対する応答としても、ネットワーク接続性(network connectivity)の損失、アプリケーションによって要求された外部サービスの障害、プリンタやモデムなどの接続デバイスの障害、ネットワーク内のピアまたはサーバコンピュータの障害といった、他の外部要因に対する応答としても行なわれる。内部エラーを受け入れるために、障害ディテクタは種々のメッセージおよびプライマリアプリケーション100によってとられたアクションをインターセプトする。一例のメソッド(図2に図示)では、ヘルパアプリケーション102は、標準Cランタイムライブラリ内のmalloc()とfree()の使用といったように、メモリ割り振りルーチン(memory allocation routine)へのプライマリアプリケーションのコールをモニタしている。malloc()ルーチンが要求されたメモリを割り振ることができないときは、メモリ障害が発生している。
この例では、malloc()ルーチンへのプライマリアプリケーションのコールは障害ディテクタによってインターセプトされる。なお、本発明の代替実施形態では、障害ディテクタは、実際にはルーチンコールをインターセプトすることなく、その出力から例外、正しくないリターンコードや他の正しくない振る舞い(behavior)といった障害をモニタするように動作させることが可能になっている。インターセプトされたコールはmalloc()ルーチンに転送される。このルーチンから戻ると、障害ディテクタはコールの結果を調べる。この時点で、障害ディテクタはブランチして、コントロール(制御権)をプライマリアプリケーション100に戻すか、あるいは障害ハンドラ202を起動する。障害ハンドラ202はスタティックにコーディングされた判定(statically coded decision)および/または構成可能な知識ベース(203)(図2に図示)のようなシステムで構成し、もっと大きなセットの振る舞いやヒューリスティックに基づいて障害処理ルーチンを起動することができる。
一実施形態では、知識ベース203は、種々の障害シナリオに対応するように構成可能なルールと振る舞いのセット(set of rules and behaviors)で構成されている。ルールベース(rule base)である知識ベースは、時間の経過と共に拡張可能にもなっている。ルールを追加するだけで、新しい障害を処理し、新しい振る舞いを採用し、あるいは利用可能な情報に基づいて異なる判断を行なうようにシステムの能力を拡張することができる。障害ハンドラは、現在の障害に関して利用可能な情報を使用して知識ベースをクエリ(照会)する。この例では、障害ハンドラは、現行プログラム内でmalloc_failedイベントが起こったことを知識ベースに通知する。そのあと、知識ベースはそのルールベースを起動し、アプリケーションとマシンの現ステート、発生した障害のタイプ、その障害と共に利用可能な重大度(severity)または拡張エラー情報、またはアプリケーション固有の障害処理ルールに関して、ルールベースのルールに基づいて判断を行なう。知識ベースは、判定ツリー(decision trees)、ケース方式の推論(cased−based reasoners)、または手法の組み合わせといった、種々の方法で実現することができる。知識ベースの処理結果は、障害に対する応答としてとられるアクションが選択されたか、あるいはどのアクションも選択されなかったか、である。このリターン命令は、現行障害をどのように処理すべきかを障害ハンドラに指示する。
障害ディテクタ201は、ターゲットコンピュータ101上またはターゲットコンピュータが属しているネットワーク内の外部イベントにも応答する。例えば、ターゲットコンピュータ101は、モバイルデバイスがバッテリで稼動しているときのように、そのパワーが低下したことを知らせることができる。障害検出システム(fault detection system)201はこのイベントを観察し、知識ベースを通して該当回復アクションを選択するために障害ハンドラを起動することができる。その他の実施形態では、障害ディテクタ201は、ネットワーク接続性の損失、アプリケーションによって要求された外部サービスの障害、プリンタやモデムなどの接続デバイスの障害、ネットワーク内のピアまたはサーバコンピュータの障害、その他の重要イベントに応答するように構成することができる。この場合、障害ディテクタは2つの異なるモジュール、すなわち、アプリケーション固有の障害を観察するモジュールとシステム全体の障害または環境上の問題を観察するモジュールを含んでいるものと見ることができる。
障害ディテクタ201は、ネットワークから切り離すことができるモバイルデバイスと関連付けて使用することができる。このタイプのデバイスでは、ネットワーク割り込み (network interruption)が頻繁に起こる可能性があり、プライマリアプリケーション100のコードは、モバイル用に設計されていないことがある。さらに、モバイルデバイスでは、プライマリアプリケーション100のコードは配信モード用にストリーム化することが可能であり、このモードでは、プライマリアプリケーション100はプライマリアプリケーション100のある種の関数を操作するために必要なコードセグメントに分割されている。これらのコードセグメントは、ジャストインタイム(just−in−time)でモバイルデバイスに配信されるので、プライマリアプリケーション100はフットプリント(footprint:実装面積)を最小にして迅速に配置することができる。このモードでは、モバイルデバイスのオペレータは、利用可能でないプライマリアプリケーションの関数を、オフラインで使用中のときに要求することがよくある。この関数が要求された時点では、コードセグメントは存在していないので、ネットワークからアクセス可能になっていない。
本発明の一実施形態では、プライマリアプリケーションのシステムコードページにアクセスできないことを示すページ不在(page fault)がモバイルデバイスのオペレーティングシステムから出されると、障害ディテクタ201はこの障害をトラップ(trap)し、障害ハンドラ202を起動する。別の実施形態では、障害ディテクタ201は、アプリケーションをストリーム化するためのシステムの一部として、モバイルデバイスのオペレーティングシステム内に埋め込まれている。このシステムでは、データパケットのネットワーク要求が失敗したとき、および障害を起こした振る舞いが直接に検出されたときに、ページ不在が起こる前に傷害を検出することができる。
モバイルデバイスはネットワークから切り離されることがあるので、ネットワークリソースとの連絡を失ったり、連絡不能になったりすることがある。プライマリアプリケーション100がネットワークとの接続を試みて、失敗すると、別のクラスの障害が起こる可能性がある。このクラスの障害では、障害ディテクタ201はネットワークに対する要求をインターセプトし、失敗すると、適切な、障害を起こした振る舞いを実行することができる。
上述したように、障害が検出されると、障害ハンドラ202は、どの障害ハンドラが最も適しているかを判断する。あるケースでは、障害ハンドラはヘルパアプリケーション102を起動して、ユーザがとるべきアクションを判断できるようにするか、あるいはヘルパアプリケーションによって構成されているアクションを起動する。ヘルパアプリケーションは障害の存在をユーザに通知することも、その障害を内部ログに記録することも、障害通知をSNMP、WMIまたはWindows(登録商標)イベントログ(Event Log)などの、種々のモニタリングシステムに転送することもできる。ヘルパアプリケーションは、障害を処理することを選択するか、あるいは障害の発生を許容するかをユーザに質問することもでき、さらに、多数のアクションが可能な場合には、該当するアクションを選択するようにユーザに求めることができる。
プライマリ障害ハンドラとしては、リダイレクションハンドラ、一時中止ハンドラ、およびスナップショットハンドラがある。以下では、これらの障害ハンドラの各々について詳しく説明する。
リダイレクションハンドラ
リダイレクションハンドラが起動されたときは、リダイレクションハンドラはプライマリアプリケーションをプライマリアプリケーションの「保存と終了」ロジックにリダイレクトし、そのあと終了する。リダイレクションハンドラを使用する本発明の実施形態は図3に示されている。障害が発生した時点では、プライマリアプリケーション100は、障害ディテクタ201のインターセプトルーチン(intercept routine)の内側で実行されている。オペレーティングシステムのプログラムカウンタは、現在このインターセプトルーチンをポイントしているので、障害を起こしたAPIへのコールの後の次の命令を実行することを続けるのが通常である。リダイレクションハンドラは、順に、アプリケーションの保存ロジック302を起動してから、プライマリアプリケーション100から出ることになる。この保存ロジックの起動は、(a)プライマリアプリケーション100の保存エントリポイントを直接にコールするか、(b)プログラムカウンタを保存エントリポイントにリセットするか、あるいは(c)保存と終了ロジックを強制するためにコール側プログラムにジャンプ命令を挿入するか、によって実現されている。
図3に示す例では、プライマリアプリケーションは、APIのcall_thesaurus()をコールすることを試みる。このルーチンのコードセグメントはオペレーティングシステム303によってページインされていない。従って、オペレーティングシステム303はコールをインターセプトし、コードページをリトリーブするためにそのバーチャルメモリマネージャ304にクエリする。これが失敗したときは、オペレーティングシステム303はページ不在を引き起こし、通常はプライマリアプリケーションを中止する。そのあと、ページ不在はリダイレクションハンドラ306によってインターセプトされる。別の方法として、リダイレクションハンドラ306は、「コードをリトリーブするのに失敗した」ページをルーチンから直接に受け取ることもできる。
ケースによっては、プライマリアプリケーションには、保存と終了にはいくつかの変形がある場合がある。そのようなものとして、「別名保管(save as)」、「切り離し(disconnect)」または「終了(exit)」があり、これは保存関数をカプセル化している。障害ハンドラ306は、ユーザが完了した作業を安全な方法で保存し、アプリケーションから出られるようにして、アプリケーションの障害および/またはクラッシュを回避することを保証する。ユーザはアプリケーションから出たあと、アプリケーションをリスタートすることができるが、ユーザには、障害が発生したことおよび再発のおそれのあることが知らされる。
障害ハンドラの一実施形態では、プライマリアプリケーションはその「保存」ロジックを起動するが、そのデータファイルはローカルデータソースまたはプロキシストア(proxy store)にリダイレクトされるので、プライマリアプリケーションは、データファイルが壊されているため書き込みに失敗した場合や、データファイルがネットワークファイルであって、ネットワークが利用できない場合に、その保存オペレーションを完了することができる。プログラムは、ネットワークファイルサーバと通信できなかったか、あるいはそのファイルを効果的に保存できなかったものとして、別のエラーを引き起こすのが通常である。再接続されたとき、データファイルまたはプロキシストアは、ソースデータファイルと同期させることも、ソースデータファイルを置き換えることもできる。
一時中止ハンドラ
一時中止ハンドラが起動されたときは、一時中止ハンドラは、プライマリアプリケーション100を構成するすべてのプロセス、子プロセスおよびスレッドを一時中止する。プライマリアプリケーション100が一時中止されたあと、一時中止ハンドラは再開が可能であるとの通知を待っている(例えば、ネットワークが再確立された、あるいはユーザが継続を望んでいることを示すコントロールを選択した、といったイベント)。継続の要求を受けたときは、一時中止ハンドラは、(a)プライマリアプリケーションを直接に再開すること、(b)プログラムカウンタをリセットすること、あるいは(c)障害を起こした元のAPIを再起動することができる。
一時中止している間、プライマリアプリケーション100はその全体形式が存在したままになっており、ターゲットコンピュータ101上のアプリケーションとして見られている。一実施形態では、一時中止ハンドラは、Windows(登録商標) Task Managerなどの簡易システムツールを通してプライマリアプリケーションが偶発的に再開するのを防止している。一時中止ハンドラは、明示的手段を通してあるいは内部ヘルパアプリケーション102を通してのみ制御可能になるようにプライマリアプリケーションを一時中止する。
一時中止ハンドラは、明示的「保存」関数がないアプリケーション用に使用されることが多い。アプリケーションは一連の副次作用(side effect)として、あるいは外部サーバ、データベースまたは他のシステムとの通信を通してそのステートを保存している。1つの例において、アプリケーションがハイパテキストアプリケーションであり、HTTPサーバとのコネクションが失われたとする。この例では、ハイパテキストアプリケーションのユーザ側のステートをストアすることも、ハイパテキストブラウザアプリケーション全体をストアすることもできる。サーバがオンラインに戻ったとき、アプリケーションは保存したステートを使用して継続することができる。
スナップショットハンドラ
障害が長期的な問題であることを示し、ターゲットコンピュータがパワーサイクル(power cycled)しているか、あるいは別の障害を受けている可能性があるために、一時中止が問題の持続より長く存続しない場合、スナップショットハンドラが起動される。この事態が起こった場合には、後日のリストアに備えてプライマリアプリケーションの稼動状態をバックアップにとっておくことが望ましい。
スナップショットハンドラが起動されると、スナップショットハンドラは、プライマリアプリケーションのプロセスとスレッドを一時中止し、プライマリアプリケーションのメモリスナップショットをとるが、この中には、アプリケーションの一部ではなく、アプリケーションをプロセスとしてリストアするために使用されるカーネルデータ構造が含まれている。このメモリスナップショットは、後日の回復に備えてディスクに書き出しておくことができる。別の方法では、スナップショットハンドラは、よりきめ細かい回復が行なえるように定期的に、先を見越してプライマリアプリケーションのスナップショットをとることができる。極度のオーバヘッドを回避するために、メモリスナップショットを迅速にとり、バックグラウンドでメモリをディスクまたは他の不揮発性ストレージにストアすることができる。スナップショットが完了すると、スナップショットハンドラは、スナップショットがとられたのが長期的な問題のためであれば、プライマリアプリケーションを中止することができる。
プライマリアプリケーションが中止されると、ヘルパアプリケーション102は、障害がクリアされるか、あるいはユーザがアプリケーションを再起動することを望んでいることを明示的に確認するまでは、アプリケーションが再起動されるのを防止する働きをする。起動されたとき、ヘルパアプリケーションはプライマリアプリケーションをリストアすることができるが、プライマリアプリケーションの別のインスタンスを作成させるだけで済ますこともできる。別の方法として、ヘルパアプリケーションは、スナップショットイメージをネットワーク内のピアまたはサーバコンピュータに転送し、そこで再開させることもできる。
リストアされると、障害ハンドラは、プロセスのメモリを逆マッピング(map back)し、プログラムが中止されたときと同じように正確に継続できるように内部オペレーティングシステムのカーネルデータ構造をリセットする。1つの例として、アプリケーション100が障害発生時にいくつかのファイルをオープンしている場合には、スナップショットハンドラは、これらのファイルを再オープンし、プライマリアプリケーションが旧ファイルハンドルの使用を試みてエラーを引き起こさないように、知らされたファイルハンドルを再割り当てする必要がある。また、ファイルハンドルは、ストリームアクセスのためにセットされている場合は、ファイル内の該当オフセットをポイントしていなければならない。
図5は、本発明のヘルパアプリケーションの一実施形態のフローチャートを示す図である。潜在的に障害のあるAPIがステップ501、502でコールされ、ヘルパアプリケーション102は、コールが正しく行なわれたかどうか、あるいは障害が発生したかどうかをステップ504で質問する。障害が発生していなければ、ステップ505でアプリケーションからAPIの結果が戻される。障害が発生していれば、ヘルパアプリケーション102は障害ハンドラを特定し、リダイレクションハンドラと一時中止ハンドラのどちらかを選択する。一時中止ハンドラがステップ508で選択された場合は、ヘルパプログラムはプライマリアプリケーションが再開可能であるかどうかを質問する。プログラムが再開される場合は、ステップ505でプログラムからAPI結果が戻される。プライマリアプリケーションが再開されない場合は、ヘルパアプリケーションはAPIを再起動するかどうかをステップ510で質問する。APIが再起動されない場合は、ヘルパアプリケーションはスナップショットが利用可能であるかどうかを質問する。ステップ511においてスナップショットが利用可能であれば、ヘルパアプリケーションはステップ513でPCをスナップショットに戻す。スナップショットが利用可能でなければ、ステップ512でプログラムカウンタをリセットする。
本発明のさらに別の実施形態では、ヘルパアプリケーション102は、データベース、TCP/IPソケットまたは他のIPCメカニズムなどとの外部コネクションもリストアする。それを行なうために、ヘルパアプリケーション102は、HTTPサーバによるデータベースログインや認証といった援助をユーザに求めることがある。上述したように、システムは、いくつかのプライマリアプリケーション内部をリセットしたり、ソケット記述子(socket descriptor)のように、変化したエンティティにハンドルをリダイレクトしたりする必要が起こることがある。代替実施形態では、障害の有無に関係なく、ユーザがこの振る舞いを明示的に起動するのを可能にするユーザインタフェースを設けることができる。
ヘルパアプリケーションは、ヘルパアプリケーションが処理する障害別に分類すると共に、ヘルパアプリケーションが起動できるハンドル別に分類する。ヘルパアプリケーションは、種々の手法を通してこのことをオフラインまたはオンラインで知ることができる。一例では、障害ハンドラは、すべての障害を検出するように登録される。
本発明の別の実施形態では、プライマリアプリケーションコードについてスタティック分析を行なうために追加ステップがとられて、その構成と障害の潜在性が判断されると共に、「保存」や「終了」などの共通プログラムエントリポイントが判断される。潜在的障害を調べるとき、分析ルーチンは、ファイルへのアクセスまたはODBCによるデータベースへのアクセスといった共通APIのセットの使用、あるいは上述したように、malloc()とfree()などのメモリルーチンまたはsocket()またはWindows(登録商標) GetNamedPipe()などのIPCルーチンの使用を探し出す。
分析が完了したあと、アナライザ403は、システムの利用可能障害ハンドラを通して回復可能であると分かっている障害および回復可能でない障害と障害処理のための推奨方法のリストを提示することができる(図4参照)。どちらの障害の場合も、障害ハンドラを構成するためのアクションを禁止することができる。回復可能でない障害の場合は、リダイレクションハンドラが使用されるのが普通である。「保存」コードが存在しないか、特定できない場合は、システムは単純に安全に終了するようにセットアップすることができる。
プログラムエントリポイントを分析するために、システムはプラットフォームの知識を使用してソースを見つけることができる。例えば、Microsoft Windows(登録商標)プラットフォームでは、WM_EXITメッセージに応答できるメッセージハンドラは、プログラムの「終了」ルーチンに対応付けることができる。従って、WM_EXITをサーチすると、この関数ポイント(function point)が示される。別の方法として、リソースファイルには、File:Exitメニューコマンドと起動時に生成されるWindows(登録商標)メッセージを記述することができる。これらのインジケータが存在しないときは、アナライザはさらに進んで、Windows(登録商標) ExitProcess()またはexit()ルーチンなどの、APIの使用を探し出す。「保存」ルーチンを探し出すとき、アナライザはファイルまたは外部データソースの使用を探し出すことができる。
代替実施形態では、障害とエントリポイントはダイナミック分析を使用して特定することができる。プログラムは、これらのシグネーチャ(signature)を特定するためにその実行中にトレースすることができる。一実施形態では、ダイナミック分析は、マクロ記録(macro recording)と同じようにエントリポイントを記録するエントリポイント識別子UI404を使用して行なわれる。「保存」関数を特定していることをユーザが示していると、この識別子にはすべてのUIとプログラムアクティビティが記録される。これらのシグネーチャから、エントリポイントと関連コードを特定することができる。アプリケーションがオフラインで使用されるストリーム化アプリケーション(streamed application)では、「保存」と「終了」関数で特定されたコードには、この振る舞いが起動可能であることを保証するためにコードが常にストリーム化され、オフラインモードで存在していなければならないことを示すタグが特別に付けられる。
本発明によれば、アプリケーションの使用中の破壊や障害を、作業を失うことなく受け入れることを可能にする手段も提供されている。アプリケーションの使用中に障害が起こると、そのプログラムで行なわれた一部の作業量が、完了しているか否かに関係なく、放棄されるのが通常である。本発明のシステムと方法によれば、プログラムを単純に回復するのではなく、それ以上にデータ損失が起こらないことを保証する手段が使用可能になっている。さらに、これは、ソフトウェアを修正したり、コンパイルし直したり、設計し直したりしなくても行なわれ、このパラダイム(paradigm)を念頭に入れて新プログラムを構築することを可能にしている。
以上、若干の好適実施形態と関連付けて本発明を説明してきたが、当然に理解されるように、本発明はこれらの特定実施形態に限定されるものではなく、むしろ、本発明は、代替実施形態、変更および等価技術も包含することを意図している。いくつかの特定コンポーネント、図およびマテリアルのタイプが言及されているが、当然に理解されるように、かかるコンポーネントの値、寸法およびマテリアルのタイプは単なる例示であり、本発明の範囲をいかなる態様においても限定するものではない。
本発明のシステムと方法の一実施形態を示す概略図である。 図1に図示の本発明のシステムと方法で利用される障害検出プロセスを示す概略図である。 図1に図示の本発明のシステムと方法におけるプログラムカウンタのオペレーションを示す概略図である。 図1に図示の本発明のシステムと方法によって使用されるプログラムアナライザを示す概略図である。 障害を検出し、処理するために図1に図示の本発明の方法によって実行されるステップを示すフローチャートである。

Claims (9)

  1. コンピュータアプリケーションを実行中のデータ損失を最小限にする方法であって、
    前記コンピュータアプリケーションのコールをインターセプトするステップと、
    障害又は潜在的障害の存在を検出するためにインターセプトされた前記コールの結果を調べるステップと、
    障害又は潜在的障害の前記存在が検出された場合に、
    前記障害または潜在的障害を処理するためのメソッドを選択するステップと、
    前記障害または潜在的障害を処理するための選択された前記メソッドを実行するステップとを備え、
    前記インターセプトするステップ、調べるステップ、選択するステップおよび実行するステップは、前記コンピュータアプリケーションのコードにアクセスすることなく、あるいは前記コンピュータアプリケーションのコードを修正することなく実行され、
    障害又は潜在的障害の前記存在が検出されない場合には、前記コンピュータアプリケーションへコントロールを戻し、
    前記障害または潜在的障害を処理するためのメソッドは、以下のメソッド、すなわち、前記コンピュータアプリケーションの前記コードの実行をリダイレクトするメソッド、前記コンピュータアプリケーションを一時中止するメソッド、および前記コンピュータアプリケーションのメモリスナップショットをとるメソッドの中から選択されることを特徴とする方法。
  2. 前記障害または潜在的障害を処理するための選択されたメソッドを実行するステップは、データを保存するために前記コンピュータアプリケーションの保存ロジックを起動することを含むことを特徴とする請求項1に記載の方法。
  3. 前記障害または潜在的障害を処理するための選択されたメソッドを実行するステップは、
    前記コンピュータアプリケーションを一時中止することと、
    再開の実行が可能であるとの指示を求めて前記コンピュータアプリケーションをモニタすることと、
    前記コンピュータアプリケーションを再開するか、前記コンピュータアプリケーションのプログラムカウンタをリセットするか、あるいは、障害を起こした元のAPIを再起動するかのいずれかを選択することとを含むことを特徴とする請求項1に記載の方法。
  4. 前記障害または潜在的障害を処理するための選択されたメソッドを実行するステップは、
    前記コンピュータアプリケーションを一時中止することと、
    前記コンピュータアプリケーションのメモリスナップショットをとることと、
    前記メモリスナップショットを不揮発性ストレージ手段にストアすることとをさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記コンピュータアプリケーションの内部オペレーションをモニタするステップをさらに備えることを特徴とする請求項1に記載の方法。
  6. 外部イベントをモニタするステップをさらに備えることを特徴とする請求項1に記載の方法。
  7. 前記障害または潜在的障害に関して前記コンピュータアプリケーションのユーザと通信するステップをさらに備えることを特徴とする請求項1に記載の方法。
  8. 共通エントリポイントを特定するために前記コンピュータアプリケーションのコードを分析するステップをさらに備えることを特徴とする請求項1に記載の方法。
  9. 共通エントリポイントを特定するためにコードを分析するステップは、その実行中に前記アプリケーションをトレースすることを含むことを特徴とする請求項に記載の方法。
JP2007522598A 2004-07-20 2005-07-18 コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム Active JP5128944B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US58926204P 2004-07-20 2004-07-20
US60/589,262 2004-07-20
PCT/US2005/025250 WO2006020094A2 (en) 2004-07-20 2005-07-18 Method and system for minimizing loss in a computer application

Publications (3)

Publication Number Publication Date
JP2008507767A JP2008507767A (ja) 2008-03-13
JP2008507767A5 JP2008507767A5 (ja) 2008-09-11
JP5128944B2 true JP5128944B2 (ja) 2013-01-23

Family

ID=35636751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007522598A Active JP5128944B2 (ja) 2004-07-20 2005-07-18 コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム

Country Status (7)

Country Link
US (1) US7426661B2 (ja)
EP (1) EP1779245B1 (ja)
JP (1) JP5128944B2 (ja)
KR (2) KR101470712B1 (ja)
CN (1) CN100498725C (ja)
ES (1) ES2681522T3 (ja)
WO (1) WO2006020094A2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096381B2 (en) * 2001-05-21 2006-08-22 Self Repairing Computer, Inc. On-the-fly repair of a computer
US7137034B2 (en) * 2000-05-19 2006-11-14 Vir2Us, Inc. Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair
US7111201B2 (en) * 2000-05-19 2006-09-19 Self Repairing Computers, Inc. Self repairing computer detecting need for repair and having switched protected storage
US20060277433A1 (en) * 2000-05-19 2006-12-07 Self Repairing Computers, Inc. Computer having special purpose subsystems and cyber-terror and virus immunity and protection features
US7392541B2 (en) * 2001-05-17 2008-06-24 Vir2Us, Inc. Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments
US7849360B2 (en) * 2001-05-21 2010-12-07 Vir2Us, Inc. Computer system and method of controlling communication port to prevent computer contamination by virus or malicious code
US7536598B2 (en) * 2001-11-19 2009-05-19 Vir2Us, Inc. Computer system capable of supporting a plurality of independent computing environments
US7788699B2 (en) * 2002-03-06 2010-08-31 Vir2Us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US7359831B2 (en) * 2004-05-21 2008-04-15 Bea Systems, Inc. Diagnostic context
US7376534B2 (en) * 2004-05-21 2008-05-20 Bea Systems, Inc. Watches and notifications
US7379849B2 (en) * 2004-05-21 2008-05-27 Bea Systems, Inc. Diagnostic image
US8490064B2 (en) 2004-05-21 2013-07-16 Oracle International Corporation Hierarchical debug
US7395458B2 (en) * 2004-05-21 2008-07-01 Bea Systems, Inc. Diagnostic instrumentation
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US7853947B2 (en) * 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US8117559B2 (en) * 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US8171479B2 (en) * 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US8615482B1 (en) * 2005-06-20 2013-12-24 Symantec Operating Corporation Method and apparatus for improving the utilization of snapshots of server data storage volumes
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
US8131825B2 (en) * 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
JP2009512939A (ja) * 2005-10-21 2009-03-26 ヴァー2アス インコーポレイテッド 複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法
US7526677B2 (en) * 2005-10-31 2009-04-28 Microsoft Corporation Fragility handling
US20080072150A1 (en) * 2006-09-06 2008-03-20 Yahoo! Inc. Event-based display and methods therefor
WO2008092031A2 (en) 2007-01-24 2008-07-31 Vir2Us, Inc. Computer system architecture having isolated file system management for secure and reliable data processing
US7673178B2 (en) * 2007-01-31 2010-03-02 Microsoft Corporation Break and optional hold on failure
US7765432B2 (en) * 2007-03-07 2010-07-27 Microsoft Corporation Reporting diagnostic information for code of an application program interface
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US9225684B2 (en) * 2007-10-29 2015-12-29 Microsoft Technology Licensing, Llc Controlling network access
KR100936239B1 (ko) * 2007-12-18 2010-01-12 한국전자통신연구원 스트리밍 기반 이동형 소프트웨어 제공 시스템 및 방법
US7792934B2 (en) * 2008-01-02 2010-09-07 Citrix Systems International Gmbh Loading of server-stored user profile data
US8271751B2 (en) 2008-04-24 2012-09-18 Echostar Technologies L.L.C. Systems and methods for reliably managing files in a computer system
US7934129B2 (en) * 2008-09-05 2011-04-26 Microsoft Corporation Network hang recovery
US8291261B2 (en) * 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
JP5359234B2 (ja) * 2008-12-09 2013-12-04 日本電気株式会社 ジョブ実行システム、及びジョブフロー引継ぎ制御プログラム
US8738621B2 (en) 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8392750B2 (en) * 2010-02-16 2013-03-05 Hewlett-Packard Development Company, L.P. Method and apparatus for crash recovery and resynchronization
US8823536B2 (en) 2010-04-21 2014-09-02 Microsoft Corporation Automated recovery and escalation in complex distributed applications
US8589733B2 (en) * 2010-08-13 2013-11-19 International Business Machines Corporation Saving operational state of open applications when unexpected shutdown events occur
US9116728B2 (en) 2010-12-21 2015-08-25 Microsoft Technology Licensing, Llc Providing a persona-based application experience
US9003543B2 (en) 2010-12-21 2015-04-07 Microsoft Technology Licensing, Llc Providing a security boundary
US9354852B2 (en) 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US9176742B2 (en) 2010-12-27 2015-11-03 Microsoft Technology Licensing, Llc Converting desktop applications to web applications
US8931037B2 (en) 2010-12-27 2015-01-06 Microsoft Corporation Policy-based access to virtualized applications
US9189308B2 (en) 2010-12-27 2015-11-17 Microsoft Technology Licensing, Llc Predicting, diagnosing, and recovering from application failures based on resource access patterns
US8789138B2 (en) 2010-12-27 2014-07-22 Microsoft Corporation Application execution in a restricted application execution environment
US8621441B2 (en) * 2010-12-27 2013-12-31 Avaya Inc. System and method for software immunization based on static and dynamic analysis
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
WO2012106931A1 (zh) * 2011-07-26 2012-08-16 华为技术有限公司 一种应用程序的内存错误修复方法
CN102521082A (zh) * 2011-12-08 2012-06-27 上海交通大学 一种星载实时操作***中的检查点恢复容错方法及***
US9483344B2 (en) 2012-04-05 2016-11-01 Assurant, Inc. System, method, apparatus, and computer program product for providing mobile device support services
US9413893B2 (en) 2012-04-05 2016-08-09 Assurant, Inc. System, method, apparatus, and computer program product for providing mobile device support services
US20140067912A1 (en) * 2012-09-04 2014-03-06 Bank Of America Corporation System for Remote Server Diagnosis and Recovery
CN103593191A (zh) * 2013-11-19 2014-02-19 乐视致新电子科技(天津)有限公司 调用应用程序数据的方法和装置
US20150242282A1 (en) * 2014-02-24 2015-08-27 Red Hat, Inc. Mechanism to update software packages
DE102014007244A1 (de) 2014-05-16 2015-11-19 Nidec Motors & Actuators (Germany) Gmbh Bürstenhaltevorrichtung für eine Kommutatormaschine
CN104794015B (zh) * 2015-04-16 2017-08-18 华中科技大学 一种实时流计算流速感知弹性执行容错***
US10002004B2 (en) * 2016-05-26 2018-06-19 International Business Machines Corporation Stream computing application shutdown and restart without data loss
US9971655B1 (en) * 2016-06-29 2018-05-15 EMC IP Holding Company LLC Primed application recovery
US10299311B2 (en) * 2016-09-21 2019-05-21 Carbyne Ltd. System and method for ensuring continuous communication between a user device and an emergency dispatcher unit
US20180082053A1 (en) * 2016-09-21 2018-03-22 Telefonaktiebolaget Lm Ericsson (Publ) Application token through associated container
JP6874706B2 (ja) * 2018-02-07 2021-05-19 オムロン株式会社 アプリケーションプログラムを生成する方法、装置、プログラム
EP3948533A1 (en) * 2019-03-27 2022-02-09 Amazon Technologies Inc. Continuation workflows
US11074142B1 (en) * 2021-01-15 2021-07-27 Coupang Corp. Systems and methods for automatically resolving system failure through force supplying cached API data

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69032508T2 (de) * 1989-12-22 1999-03-25 Tandem Computers Inc Fehlertolerantes Rechnersystem mit Online-Wiedereinfügung und Abschaltung/Start
CA2032067A1 (en) * 1989-12-22 1991-06-23 Douglas E. Jewett Fault-tolerant computer system with online reintegration and shutdown/restart
JPH04137046A (ja) * 1990-09-28 1992-05-12 Toshiba Corp 電子計算機のオペレーティングシステム
DE69415593T2 (de) * 1993-06-30 1999-05-20 Microsoft Corp Verfahren zur Überprüfung eines nachrichtengesteuerten Betriebssystems
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
EP0830611A4 (en) * 1995-06-02 2007-05-09 Cisco Systems Inc TELECONTROL OF COMPUTER PROGRAMS
JPH0922369A (ja) * 1995-07-07 1997-01-21 Fujitsu Ltd マルチタスキング方式のカーネルにおける不正動作検出方法
US6047123A (en) * 1997-03-27 2000-04-04 Hewlett-Packard Company Methods for recording a compilable graphics call trace
US5991856A (en) * 1997-09-30 1999-11-23 Network Associates, Inc. System and method for computer operating system protection
US6631480B2 (en) * 1999-11-10 2003-10-07 Symantec Corporation Methods and systems for protecting data from potential corruption by a crashed computer program
US6857085B1 (en) * 2000-05-15 2005-02-15 Microsoft Corporation Method and system for handling an unexpected exception generated by an application
US6708291B1 (en) * 2000-05-20 2004-03-16 Equipe Communications Corporation Hierarchical fault descriptors in computer systems
US6973643B2 (en) * 2001-08-17 2005-12-06 International Business Machines Corporation Method, system and program for handling errors occurring in function calls
US7076692B2 (en) * 2001-08-31 2006-07-11 National Instruments Corporation System and method enabling execution stop and restart of a test executive sequence(s)
US6928639B2 (en) * 2001-09-11 2005-08-09 International Business Machines Corporation Time-interval based monitor function for dynamic insertion into and removal from a running application
JP4125056B2 (ja) * 2002-06-28 2008-07-23 キヤノン株式会社 ログ取得方法
US7293201B2 (en) * 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems

Also Published As

Publication number Publication date
CN100498725C (zh) 2009-06-10
ES2681522T3 (es) 2018-09-13
US20060020858A1 (en) 2006-01-26
KR20120079847A (ko) 2012-07-13
EP1779245A2 (en) 2007-05-02
EP1779245B1 (en) 2018-06-13
US7426661B2 (en) 2008-09-16
WO2006020094A3 (en) 2006-04-27
KR20070041579A (ko) 2007-04-18
KR101470712B1 (ko) 2014-12-08
WO2006020094A2 (en) 2006-02-23
CN101023411A (zh) 2007-08-22
JP2008507767A (ja) 2008-03-13

Similar Documents

Publication Publication Date Title
JP5128944B2 (ja) コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム
US10846167B2 (en) Automated issue remediation for information technology infrastructure
US7908521B2 (en) Process reflection
US6457142B1 (en) Method and apparatus for target application program supervision
Xu et al. Early detection of configuration errors to reduce failure damage
US7243267B2 (en) Automatic failure detection and recovery of applications
KR102268355B1 (ko) 클라우드 배치 기반구조 검증 엔진
EP2427822B1 (en) Exception raised notification
US6591379B1 (en) Method and system for injecting an exception to recover unsaved data
US7000150B1 (en) Platform for computer process monitoring
US8589889B2 (en) Apparatus and method of detecting errors in embedded software
US7856639B2 (en) Monitoring and controlling applications executing in a computing node
Liu et al. FCatch: Automatically detecting time-of-fault bugs in cloud systems
US8046540B2 (en) Shared closures on demand
US11157373B2 (en) Prioritized transfer of failure event log data
US8166460B2 (en) System and method for analyzing HTTP sessions
US7739689B1 (en) Internal monitoring of applications in a distributed management framework
Wang et al. Tjosconf: Automatic and safe system environment operations platform
Lopes et al. Fault tolerance in a mobile agent based computational grid
US8533331B1 (en) Method and apparatus for preventing concurrency violation among resources
Klemm et al. Enhancing Java server availability with JAS
CN113901443A (zh) 守护进程故障检测方法及装置、存储介质及电子设备
Sultania Monitoring and Failure Recovery of Cloud-Managed Digital Signage
Klemm et al. Avaya Labs Research 600 Mountain Ave. Murray Hill, NJ 07974, USA
Eayrs et al. Maximizing the Performance of Your SAS® Solution: Case Studies in Web Application Server Tuning for n-tier SAS Applications

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080718

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080718

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120911

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121002

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121101

R150 Certificate of patent or registration of utility model

Ref document number: 5128944

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151109

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250