JP2016042338A - 情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム - Google Patents
情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム Download PDFInfo
- Publication number
- JP2016042338A JP2016042338A JP2014166633A JP2014166633A JP2016042338A JP 2016042338 A JP2016042338 A JP 2016042338A JP 2014166633 A JP2014166633 A JP 2014166633A JP 2014166633 A JP2014166633 A JP 2014166633A JP 2016042338 A JP2016042338 A JP 2016042338A
- Authority
- JP
- Japan
- Prior art keywords
- job
- abnormality
- single process
- single external
- information processing
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract 31
- 230000010365 information processing Effects 0.000 title claims abstract 18
- 238000012545 processing Methods 0.000 claims abstract 21
- 230000005856 abnormality Effects 0.000 claims abstract 20
- 238000001514 detection method Methods 0.000 claims abstract 10
- 238000012958 reprocessing Methods 0.000 claims 1
Images
Landscapes
- Retry When Errors Occur (AREA)
Abstract
【課題】ジョブの並列処理において、単一外部プロセスで障害が発生した場合であっても、単一外部プロセスの障害によって停止・失敗する処理の数を最小限に抑えることができる情報処理システムを提供する。【解決手段】この情報処理システムは、単一プロセスを共有して複数のジョブの並列処理を行う情報処理システムであって、単一プロセスにおいてジョブを処理中に発生した異常を検出する検出手段と、検出手段により異常が検出された場合に単一のプロセスに依頼された新たなジョブを待機させる待機手段と、単一プロセスを再起動させる起動手段と、単一プロセスの再起動後に異常の発生時に処理中であったジョブを単一プロセスに再処理させる処理手段とを備える。【選択図】 図11
Description
本発明は、情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラムに関し、特に、複数のジョブが単一のプロセスを共有し並列処理を行う情報処理システムにおける、単一プロセスの管理と情報処理システムの障害復旧方法に関する。
計算機上のマルチプロセスで動作する情報処理システムにおいて、生成された複数のプロセスがシステム内の単一のプロセスを共有して使用することがある。プロセスには、OS(オペレーティングシステム)上に同じプロセスを複数生成して動作することが可能なものと、同じプロセスをOS上にひとつしか生成できないものが存在する。また、後者には、生成された単一プロセスで単一のジョブしか受け付けないものと、単一プロセスで複数のジョブを受けられ、それらを並列に処理できるもの(以降、「並列処理可能な単一プロセス」という)がある。
並列処理可能な単一プロセスを複数プロセスで共有するとき、通常、並列処理されるジョブは、互いに影響を及ぼすことはない。そのため、ジョブの依頼主となるプロセスは、他プロセスを意識することなく単一プロセスにジョブを依頼し、単一プロセスは依頼されたジョブを待機させることなく処理することができる。
なお、並列処理されるジョブが互いに影響を及ぼさないのは、単一プロセスでの処理が正常に行われている場合に限られる。従って、並列処理可能な単一プロセスで障害が発生すると、単一プロセスで処理中のすべての処理が続行不能となり処理に失敗する。さらに、単一プロセスが復旧するまでの間に単一プロセスに新たに依頼される処理も受け付けられることなく失敗する。
失敗を防ぐために、例えば、排他制御が挙げられる。例えば、特許文献1では、複数のノードから成る計算機システムにおいて、各ノードに共有プロセスが他ノードに占有されているか否かを判断する手段を設ける方法が開示されている。共有プロセスが他ノードに占有されている場合、各ノードは、他ノードから共有プロセスの開放が通知されるまでは自身からのジョブを待機させることで排他処理を行う。また、各ノードは、共有プロセスを占有中の他ノードに障害が発生したとき、他ノードによる共有プロセスの占有を解き、共有プロセスをジョブの受け付けが可能な状態にリカバリする手段を有する。
しかしながら、排他制御を行うと一度にひとつのジョブしか処理できないため、ジョブ数が多い場合や各ジョブの処理時間が長い場合に、処理効率が著しく低下する。そのため、処理効率を重視するシステムでは複数ジョブを並列処理することが多い。
複数ジョブを並列処理するシステムでは、仕様変更のできない単一プロセス(以下、「単一外部プロセス」という)を複数プロセスで共有している。単一外部プロセスは、処理の途中経過を他のプロセスに通知しないため、単一外部プロセスを使用する他のプロセスは、単一外部プロセスにジョブを依頼した時刻からの経過時間を元に単一外部プロセスの処理状態を判断する。単一外部プロセスに依頼されるジョブは、制限時間を有し、制限時間内に処理が終了せずタイムアウトした場合は、単一外部プロセスが異常状態にある、つまり障害が発生したと判断される。そのため、単一外部プロセスにおいて実際に障害が発生した時刻とシステムが障害を認識する時刻には差が生じる。言い換えると、システム上では、単一外部プロセスの障害にすぐに気づくことができない。単一外部プロセスを使用したい他プロセスは、単一外部プロセスで障害が発生していても、システムが障害を認識するまでは、単一外部プロセスにジョブを依頼する。そのため、他プロセスのジョブもすべて処理に失敗してしまう。
本発明は、上記の問題に鑑みて、ジョブの並列処理において、単一外部プロセスで障害が発生した場合であっても、単一外部プロセスの障害によって停止・失敗する処理の数を最小限に抑えることができる情報処理システムを提供することを目的とする。
上記課題を解決するために、本発明の情報処理システムは、複数のジョブが単一プロセスを共有して並列処理を行う情報処理システムであって、前記単一プロセスにおいてジョブを処理中に発生した異常を検出する検出手段と、前記検出手段により前記異常が検出された場合に前記単一のプロセスに依頼された新たなジョブを待機させる待機手段と、前記単一プロセスを再起動させる起動手段と、前記単一プロセスの再起動後に前記異常の発生時に処理中であったジョブを前記単一プロセスに再処理させる処理手段とを備えることを特徴とする。
本発明によれば、単一外部プロセスで障害が発生した場合であっても、障害に巻き込まれて失敗したジョブに対し、単一外部プロセスでの処理をリトライするチャンスを与えながら、単一外部プロセスを正常状態に復旧させることができる。また、復旧処理中に単一外部プロセスに依頼されるジョブを待機させ、新たに障害に巻き込まれるジョブがないようにすることで、単一外部プロセスの障害によって停止・失敗する処理の数を最小限に抑えることができる。
以下、本発明を実施するための形態について図面などを参照して説明する。
まず、図1は、本実施形態に係るプリントシステム全体の構成を示す図である。プリントシステム(情報処理システム)は、依頼者50と、依頼者50の各種端末20、30および40と、プリンタ60と、Load Balancer70と、サーバーPC80を含む。本実施形態では、各種端末20、30および40は、それぞれ、PC20、タブレットPC30や携帯端末40であるが、これに限定することなく、他の情報処理装置(端末)であってもよい。プリンタ60は、印刷処理装置であり、印刷機能のみを備えるプリンタであってよく、印刷機能、スキャン機能、複写機能等を備えるマルチファンクションプリンタ(MFP)であってもよい。なお、サーバーPC80は、複数台あってよく、それぞれがLoad Balancer70と接続されている。
依頼者50が印刷を行う際、依頼者50が指定するデータは、ネットワーク10を介してサーバーPC80にてプリンタ60で印刷できる形式に変換され。サーバーPC80は、依頼者50の各種端末20〜40から印刷データのフォーマット変換の依頼受けると、それに応じて生成した変換後のデータを直接あるいは依頼者50の端末を経由してプリンタ60に送信する。そして、プリンタ60にて、印刷が行われる。具体的には、印刷データの変換を依頼する依頼者50は、PC20などの機器を利用し、それら内部で動作するアプリケーションからネットワーク10上に存在する後述する印刷データ変換サービス2100に印刷データの変換を依頼する。印刷データ変換サービス2100は、サーバーPC80上の後述するWebサービスとして動作しているプログラムである。サーバーPC80上では、依頼者50からの変換依頼を印刷データ変換サービス2100に転送するWebサーバー4100(図3に示す)も動作している。印刷データ変換サービス2100は、複数のサーバーPC80上で動作する。ネットワーク10とサーバーPC80との間に設置されたLoad Balancer70は、各サーバーPC80に依頼者50からの依頼を均一に配分し転送する。
次に、図2は、印刷データ変換サービス2100を実現するサーバーPC80のハードウエア構成図である。印刷データ変換サービス2100は、オペレーティングシステム(OS)上で動作するアプリケーションプログラムであり、ハードディスク(HDD)1002またはROM(Read Only Memory)1003に格納されている。CPU(Central Processing Unit)1005は、OSとアプリケーションプログラムをHDD1002またはROM1003から読み出してRAM(Random Access Memory)1004にロードし実行する。処理結果は、ファイルとしてHDD1002に格納、またはデータとしてRAM1004に記憶される。アプリケーションプログラムは、サーバーPC80に接続されている入力装置1007から依頼者50等のユーザの入力、各種センサの読み取り値を取得する。出力装置1006に対しては、情報を出力し、処理結果を表示する。さらに、通信装置1008を介してネットワークに接続された他のコンピュータや装置と通信を行う。これらのハードウエアは、バス1001で互いに接続されていてアプリケーションプログラムから操作できるように構成されている。
図3は、サーバーPC80上の印刷データ変換サービス2100を含むソフトウエア群の構成図である。Webサーバー4100は、依頼者50が操作したPC20(または、タブレットPC30や携帯端末40)上のアプリケーションからHTTPプロトコルで送信されたリクエストを受け取る。Load Balancer70は、Webサーバー4100の前段に位置し、複数のサーバーPC80上で動作しているWebサーバー4100に振り分ける。この振り分ける方式は種々知られている従来の方式を適用してよく、その詳細の説明は、省略する。Locator2500は、印刷データ変換サービス2100とは独立して存在する管理プロセスである。アプリケーションサーバー4200は、要求の送付先に関連つけられている印刷データ変換サービス2100を決定するソフトウエアである。そして、複数の要求を並列実行させるために、印刷データ変換サービス2100を複数起動し、各々に要求を振り分ける。この場合でも、Locator2500は、1個のプロセスとして存在している。
図4は、印刷データ変換サービス2100の構成を示す。印刷データ変換サービス2100は、複数プロセスが共同して動作することでサービスを提供する。印刷データ変換サービス2100は複数のプロセスの共同体として動作する。構成要素は、Print Service Gateway2110、Proxy2200、Job Controller2300、Locator2500、Activator2550、Filter Host2400と各種Filter群となっている。これらは同一のControl Bus5002でつながっている。印刷データ変換サービス2100は、同一のControl Bus5002上に複数起動され、複数の要求を並列実行する。
印刷データ変換サービス2100では、まず、Proxy2200は、データ変換の依頼を受け取り、Job Controller2300に変換処理の実行を依頼する。Job Controller2300は、変換処理内容に合わせてFilter群を用意し、Proxy2200、Job Controller2300、Filter Host2400をPipeline3000と呼ばれるデータ転送チャネルで繋ぐ。そして、Job Controller2300は、用意されたFilter群に変換処理を依頼する。Filter群の中には、External Process2700 (以降、「単一外部プロセス」という)を用いて変換処理を行うFilterもある。Filterで変換された結果は、Job Controller2300を経由し、Proxy2200へと渡される。ここで、本実施形態の主要コンポーネントの役割を説明する。
(単一外部プロセス)
単一外部プロセス2700は、OS上で1つしか生成できないプロセスであり、複数のジョブを並列に処理することが可能なプロセスである。印刷データ変換サービス2100では、複数のFilterが単一外部プロセス2700を共有し、それぞれのジョブを排他制御せずに単一外部プロセス2700に依頼している。
単一外部プロセス2700は、OS上で1つしか生成できないプロセスであり、複数のジョブを並列に処理することが可能なプロセスである。印刷データ変換サービス2100では、複数のFilterが単一外部プロセス2700を共有し、それぞれのジョブを排他制御せずに単一外部プロセス2700に依頼している。
(Print Service Gateway)
印刷データ変換サービス2100に対するサービス依頼を受け付けるのは、プロセスとして存在するPrint Service Gateway2110であり、アプリケーションサーバー4200が起動する。Print Service Gateway2110は、Proxy2200をロードし、そのProxy2200がJob Controller2300に受け付けた変換処理の実行を依頼し、変換処理の結果を受領する。
印刷データ変換サービス2100に対するサービス依頼を受け付けるのは、プロセスとして存在するPrint Service Gateway2110であり、アプリケーションサーバー4200が起動する。Print Service Gateway2110は、Proxy2200をロードし、そのProxy2200がJob Controller2300に受け付けた変換処理の実行を依頼し、変換処理の結果を受領する。
(Locator)
Locator2500は、印刷データ変換サービス2100を構成するコンポーネント群を管理するプロセスである。Locator2500は、他のコンポーネントからの求めに応じて別のコンポーネントのアクセスポイントを返すという機能を有する。ここで、アクセスポイントとは、TCP/IPのリスンポートを指す。あるコンポーネントは、別のコンポーネントのアクセスポイントにアクセスすることで該コンポーネントが提供する機能を利用する。また、あるコンポーネントが他のコンポーネントのアクセスポイントをLocator2500に問い合わせる動作を「クエリー」と呼ぶ。Locator2500は、あるコンポーネントからまだ生成されていない他のコンポーネントのアクセスポイントをクエリーされると、後述するActivator2550にコンポーネントの生成を依頼する。
Locator2500は、印刷データ変換サービス2100を構成するコンポーネント群を管理するプロセスである。Locator2500は、他のコンポーネントからの求めに応じて別のコンポーネントのアクセスポイントを返すという機能を有する。ここで、アクセスポイントとは、TCP/IPのリスンポートを指す。あるコンポーネントは、別のコンポーネントのアクセスポイントにアクセスすることで該コンポーネントが提供する機能を利用する。また、あるコンポーネントが他のコンポーネントのアクセスポイントをLocator2500に問い合わせる動作を「クエリー」と呼ぶ。Locator2500は、あるコンポーネントからまだ生成されていない他のコンポーネントのアクセスポイントをクエリーされると、後述するActivator2550にコンポーネントの生成を依頼する。
Locator2500は、Activator2550が生成したコンポーネントの情報を保持し管理する。単一外部プロセス2700を管理するのもLocator2500の役割である。Locator2500は、単一外部プロセス2700の状態を管理するための管理シートを有する。なお、管理シートを以降、EP Sheetと呼ぶ。EP Sheetは、単一外部プロセス2700ごとに存在し、Locator2500は、システムで使用される単一外部プロセス2700の数だけEP Sheetを有する。EP Sheetには、単一外部プロセス2700のID、名前、ステータス、単一外部プロセス2700を使用中のFilterのリスト(使用中リスト)が登録されている。また、単一外部プロセス2700へのジョブ依頼を待機しているFilterのリスト(待機中リスト)も登録されている。単一外部プロセス2700のステータスは、「不在」、「処理可能」、「異常」の3種類で管理される。Locator2500は、必要に応じてEP Sheetの内容を更新し、その内容によって処理を変更する。詳しい処理については後述する。
また、Locator2500は、アプリケーションサーバー4200が起動した時点で既に起動しているプロセスである。Locator2500の起動の方法は、サーバーPC80上で動作しているオペレーティングシステム(OS)によって種々の方法が存在する。例えば、Windows(登録商標)であれば「Windows(登録商標) Service」というシステム起動時に自動的に起動される特殊なプロセスとして実装することが可能である。また、Linux(登録商標)やUnix(登録商標)ではデーモンプロセスとして動作させることが可能である。さらに、Locator2500は、他のコンポーネントからの求めに応じて別のコンポーネントのアクセスポイントを返すという機能を提供する。
(Activator)
Activator2550は、コンポーネントの生成の責務を担う。また、Activator2550は、生成したコンポーネントのプロセスIDを管理し、コンポーネントの削除も行う。コンポーネントには、自ら自分の寿命を管理するものとしないものがあり、Activator2550は、自分で寿命の管理をしないコンポーネントの寿命管理を担う。起動してからある一定時間が経過し、かつ待機中であるコンポーネントがあれば、Activator2550は、それを終了させる。また、Activator2550は、Locator2500からコンポーネントの生成または削除の依頼を受けると、対象となるコンポーネントを生成または削除し、処理が完了するとLocator2500に通知する。
Activator2550は、コンポーネントの生成の責務を担う。また、Activator2550は、生成したコンポーネントのプロセスIDを管理し、コンポーネントの削除も行う。コンポーネントには、自ら自分の寿命を管理するものとしないものがあり、Activator2550は、自分で寿命の管理をしないコンポーネントの寿命管理を担う。起動してからある一定時間が経過し、かつ待機中であるコンポーネントがあれば、Activator2550は、それを終了させる。また、Activator2550は、Locator2500からコンポーネントの生成または削除の依頼を受けると、対象となるコンポーネントを生成または削除し、処理が完了するとLocator2500に通知する。
(Filter、Filter Host)
Filterは、データ変換処理のみを実装したライブラリーモジュールの形式で用意する。Filter Host2400は、プロセスとして存在し、実行時に指定されたFilterをロードする。Filter Host2400は、Control Bus5002への接続とメッセージ送受信、Job Controller2300との通信などの処理を担当する。以後、FilterとFilter Host2400をひとつのコンポーネントとしてまとめてFilterと呼ぶ。
Filterは、データ変換処理のみを実装したライブラリーモジュールの形式で用意する。Filter Host2400は、プロセスとして存在し、実行時に指定されたFilterをロードする。Filter Host2400は、Control Bus5002への接続とメッセージ送受信、Job Controller2300との通信などの処理を担当する。以後、FilterとFilter Host2400をひとつのコンポーネントとしてまとめてFilterと呼ぶ。
Filterは、Filterからさらに別のプロセスにジョブを依頼することで変換処理を実現している。Filterによって使用されるプロセスの中には、単一外部プロセス2700が存在する。例えば、図4において、単一外部プロセス2700が3つのFilter2401、2402および2403に共有されている場合を示す。以上が主要コンポーネントについての説明である。ここから、システムの詳細について説明する。
(リトライ)
単一外部プロセス2700に依頼したジョブが処理に失敗した場合、再度同じジョブを単一外部プロセス2700に依頼し、処理をやり直すことをリトライ(再処理)と呼ぶ。複数のジョブが並列処理されている単一外部プロセス2700において、ある1つのジョブによって異常状態が発生すると、処理中のジョブがすべて失敗してしまう。そこで、異常に巻き込まれて失敗したジョブにリトライする権利を与え、単一外部プロセス2700が復旧した後にジョブのやり直しを行う。リトライをすることで、単一外部プロセス2700の異常を引き起こしたジョブ以外のジョブが処理に失敗する事態を回避することができる。
単一外部プロセス2700に依頼したジョブが処理に失敗した場合、再度同じジョブを単一外部プロセス2700に依頼し、処理をやり直すことをリトライ(再処理)と呼ぶ。複数のジョブが並列処理されている単一外部プロセス2700において、ある1つのジョブによって異常状態が発生すると、処理中のジョブがすべて失敗してしまう。そこで、異常に巻き込まれて失敗したジョブにリトライする権利を与え、単一外部プロセス2700が復旧した後にジョブのやり直しを行う。リトライをすることで、単一外部プロセス2700の異常を引き起こしたジョブ以外のジョブが処理に失敗する事態を回避することができる。
(Job Controller)
Proxy2200を介してデータ変換ジョブを依頼されたJob Controller2300は、ジョブを解析して変換に必要なFilterを選定し、これらFilterをロードしているFilter Host2400を取得する。Job Controller2300は、自身と各Filter、そしてProxy2200との間にPipeline3000と呼ばれるデータ転送チャネルを作成する。図2のようにPipeline3000を作成することで、Proxy2200から印刷データが複数のコンポーネントを還流し、最後に変換が終了した形で再びProxy2200に戻る。
Proxy2200を介してデータ変換ジョブを依頼されたJob Controller2300は、ジョブを解析して変換に必要なFilterを選定し、これらFilterをロードしているFilter Host2400を取得する。Job Controller2300は、自身と各Filter、そしてProxy2200との間にPipeline3000と呼ばれるデータ転送チャネルを作成する。図2のようにPipeline3000を作成することで、Proxy2200から印刷データが複数のコンポーネントを還流し、最後に変換が終了した形で再びProxy2200に戻る。
(ジョブ)
ジョブは、概念的には変換されるべき対象データと変換処理用の設定値などをまとまりのある形式に束ねたデータ構造から構成される。ジョブには、識別できるようにユニークな識別情報が与えられる(ジョブID)。生成されたジョブは、ファイルとして記憶装置に格納される。また、記憶装置から取り出す際にはジョブIDを指定してそのファイルを取得して内容を参照することが可能である。また、ジョブを破棄する行為は、ファイルの削除として実現される。ジョブは、この印刷データの内容を直接ファイル内に含むか、あるいはファイル化した印刷データのファイルパスなどの参照情報を含む。
ジョブは、概念的には変換されるべき対象データと変換処理用の設定値などをまとまりのある形式に束ねたデータ構造から構成される。ジョブには、識別できるようにユニークな識別情報が与えられる(ジョブID)。生成されたジョブは、ファイルとして記憶装置に格納される。また、記憶装置から取り出す際にはジョブIDを指定してそのファイルを取得して内容を参照することが可能である。また、ジョブを破棄する行為は、ファイルの削除として実現される。ジョブは、この印刷データの内容を直接ファイル内に含むか、あるいはファイル化した印刷データのファイルパスなどの参照情報を含む。
(第1実施形態)
本実施形態では、単一外部プロセス2700で障害が発生した場合、単一外部プロセス2700で処理中であるジョブのうち、最も古いジョブが単一外部プロセス2700の障害の原因だとして障害復旧を行う。これは、各ジョブが短時間で処理され、単一外部プロセス2700で複数のジョブが同時に処理される確率が低い場合に有効である。また、単一外部プロセス2700での実際の処理時間に対し、タイムアウトまでの時間が比較的長い場合に対しても効果的である。
本実施形態では、単一外部プロセス2700で障害が発生した場合、単一外部プロセス2700で処理中であるジョブのうち、最も古いジョブが単一外部プロセス2700の障害の原因だとして障害復旧を行う。これは、各ジョブが短時間で処理され、単一外部プロセス2700で複数のジョブが同時に処理される確率が低い場合に有効である。また、単一外部プロセス2700での実際の処理時間に対し、タイムアウトまでの時間が比較的長い場合に対しても効果的である。
図5は、単一外部プロセス2700に5つのFilter7210〜7250からジョブの依頼が届く場合の概略図である。単一外部プロセス2700とFilter群は、管理プロセスによって管理されている。本実施形態では、Filter1 7210からのジョブ(Job1)を単一外部プロセス2700で処理している際に、単一外部プロセス2700で異常が発生したとする。単一外部プロセス2700に依頼されるジョブは、制限時間を有し、制限時間内に処理が終了せずにタイムアウトした場合、単一外部プロセス2700が異常状態にあると判定する。図5では、実線の矢印がジョブの進行度合いを示し、その矢印の下の灰色の線がジョブの制限時間を示す。本実施形態では、Job1の処理中に異常が発生してから、Job1がタイムアウトするまでの間にFilter2 7220、Filter3 7230、Filter4 7240からそれぞれJob2、Job3、Job4が依頼されたとする。さらに、Job1がタイムアウトした直後にFilter5 7250がJob5を単一外部プロセス2700に依頼しようとしているとする。
このとき、単一外部プロセス2700で処理中のジョブのうち、最も古いジョブが異常の原因だと管理プロセスは判定する。そこで、管理プロセスは、Job1以外のジョブが異常状態に巻き込まれて失敗するのを防ぐための処理を行う。まず、Job5は、単一外部プロセス2700が異常状態であると判定された後の依頼なので、管理プロセスは、単一外部プロセス2700を正常状態に復旧させるまでJob5を待機させる。ジョブを待機させるとは、単一外部プロセス2700へのジョブの依頼を、許可を出すまで実行させないということである。Job2、Job3、Job4は、単一外部プロセス2700に既に依頼されているジョブである。しかし、これらは、単一外部プロセス2700が異常状態であるため、処理が進行せず失敗する。そこで、管理プロセスは、これら3つのジョブに対し、単一外部プロセス2700が正常状態に復旧した後、ジョブを単一外部プロセス2700に依頼しなおすよう指示をする。このように、ジョブをやり直し、または待機させることで単一外部プロセス2700における障害に巻き込まれて失敗するジョブを最小限に抑える。
(単一外部プロセスのステータスによる動作の変化)
図6は、単一外部プロセス2700に関するLocator2500のイベントループ処理を示す。まず、Locator2500は、Filterから、クエリーを受け取ったか否かを判定する(ステップS001)。クエリーを受け取った場合(Yes)、ステップS100に進み、ジョブ受信時の処理を行い(ステップS100)、ステップS001に戻って処理を進める。一方、クエリーを受け取ってない場合(No)、ステップS002に進み、異常通知を受け取ったか否かを判定する(ステップS002)。異常通知を受け取った場合(Yes)、ステップS200に進み、異常時の処理を行い(ステップS200)、ステップS001に戻って処理を進める。一方、異常通知を受け取っていない場合(No)、ステップS003に進み、ジョブの終了通知を受け取ったか否かを判定する(ステップS003)。ジョブの終了通知を受け取った場合(Yes)、ステップS301に進み、対象のジョブを処理中リストから削除(消去)し(ステップS301)、ステップS001に戻って処理を進める。一方、ジョブの終了通知を受け取っていない場合(No)、ステップS001に戻って処理を進める。
図6は、単一外部プロセス2700に関するLocator2500のイベントループ処理を示す。まず、Locator2500は、Filterから、クエリーを受け取ったか否かを判定する(ステップS001)。クエリーを受け取った場合(Yes)、ステップS100に進み、ジョブ受信時の処理を行い(ステップS100)、ステップS001に戻って処理を進める。一方、クエリーを受け取ってない場合(No)、ステップS002に進み、異常通知を受け取ったか否かを判定する(ステップS002)。異常通知を受け取った場合(Yes)、ステップS200に進み、異常時の処理を行い(ステップS200)、ステップS001に戻って処理を進める。一方、異常通知を受け取っていない場合(No)、ステップS003に進み、ジョブの終了通知を受け取ったか否かを判定する(ステップS003)。ジョブの終了通知を受け取った場合(Yes)、ステップS301に進み、対象のジョブを処理中リストから削除(消去)し(ステップS301)、ステップS001に戻って処理を進める。一方、ジョブの終了通知を受け取っていない場合(No)、ステップS001に戻って処理を進める。
次に、図7は、単一外部プロセス2700についてのクエリーを受け取った際の、単一外部プロセス2700のステータスに応じたLocator2500の処理フローを示すフローチャートである。この処理は、図6のステップS001でクエリーを受け取った場合のステップS100の処理である。まず、単一外部プロセス2700のステータスが「不在」であるか否かを判定する(ステップS110)。単一外部プロセス2700のステータスが「不在」の場合(Yes)、ステップS111に進む。ここで、単一外部プロセス2700のステータスが「不在」とは、単一外部プロセスが2700起動されていない状態を示す。次に、Locator2500は、Activator2550に単一外部プロセス2700の生成を依頼する(ステップS111)。すなわち、対象の単一外部プロセスを起動する。Activator2550は、単一外部プロセス2700を起動すると、単一外部プロセス2700のプロセスIDを取得し、Locator2500に単一外部プロセス2700の起動が完了したことを通知する。次に、Locator2500は、この通知を受けると、対象の単一外部プロセス2700のEP Sheetのステータスを「処理可能」に更新(変更)し(ステップS112)、ステップS121進む。
ステップS110で、単一外部プロセス2700のステータスが「不在」でない場合(No)、ステップS120に進む。そして、単一外部プロセス2700のステータスが「処理可能」であるか否かを判定する(ステップS120)。単一外部プロセス2700のステータスが「処理可能」である場合(Yes)、ステップS121に進む。Locator2500は、クエリーをしてきたFilter(ジョブの依頼主)をEP Sheetの使用中リストに登録し(ステップS121)、FilterにResponse Message(ジョブ依頼の許可)を送る(ステップS122)。なお、EP Sheetの使用中リストに登録する内容は、FilterのプロセスIDなど、Filterを特定できる情報である。Response Messageには、コンポーネント(本実施形態では、単一外部プロセス2700)の名前、サービスI/Fを示すURLとポート番号が格納されている。Filterは、Response Messageを受け取ると、単一外部プロセス2700のサービスI/Fを利用して単一外部プロセス2700にジョブを依頼することができる。
ステップS120で、単一外部プロセス2700のステータスが「処理可能」でない場合(No)、ステップS131に進む。すなわち、単一外部プロセス2700のステータスが「不在」と「処理可能」以外である場合、つまり「異常」であると判定される。そして、Locator2500は、他のFilterから新たに依頼されるジョブをEP Sheetの待機中リストに登録する(ステップS131)。このとき、Locator2500は、ジョブの依頼元のFilterにResponse Messageを送信しないことで、依頼されたジョブを待機させる。
(正常時の処理)
図8は、Filter A1(2401)が単一外部プロセス2700を用いてジョブを処理する際のシーケンス図である。まず、Filter A1(2401)は、Locator2500に使用したい単一外部プロセス2700についてクエリーする(ステップS2010)。このとき、Locator2500は、必要に応じて単一外部プロセスを起動する処理を行う。次に、Locator2500は、保持するEP Sheetの使用中リストにFilter A1(2401)を登録する(ステップS1010)。そして、Locator2500は、Filter A1(2401)からのクエリーに対し、単一外部プロセス2700のアクセスポイントの情報を載せたResponse Messageを送る(ステップS1020)。
図8は、Filter A1(2401)が単一外部プロセス2700を用いてジョブを処理する際のシーケンス図である。まず、Filter A1(2401)は、Locator2500に使用したい単一外部プロセス2700についてクエリーする(ステップS2010)。このとき、Locator2500は、必要に応じて単一外部プロセスを起動する処理を行う。次に、Locator2500は、保持するEP Sheetの使用中リストにFilter A1(2401)を登録する(ステップS1010)。そして、Locator2500は、Filter A1(2401)からのクエリーに対し、単一外部プロセス2700のアクセスポイントの情報を載せたResponse Messageを送る(ステップS1020)。
次に、Filter A12401は、単一外部プロセス2700のアクセスポイントを取得すると、ジョブを単一外部プロセス2700に依頼する(ステップS2030)。ここで、Filter A1(2401)は、単一外部プロセス2700にジョブを依頼する前に、後述する「リトライフラグ」が立っている場合、「リトライフラグ」を下ろす(ステップS2020)。なお、単一外部プロセス2700に異常がない場合、リトライフラグは下りている。また、Filter A1(2401)は、単一外部プロセス2700にジョブを依頼する際、単一外部プロセス2700での処理時間に制限を持たせるためのタイマーをスタートさせる。単一外部プロセス2700での処理が時間内に正常終了すると、Filter A1(2401)は、単一外部プロセス2700から処理結果を受け取る(ステップS3010)。そして、Filter A1(2401)は、Locator2500にDone Messageを送信し(ステップS2040)、単一外部プロセス2700を使用し終えたことを通知する。Filter A1(2401)は、その後、次のFilterまたはJob Controller2300へ結果を渡す。次に、Locator2500は、Filter A1(2401)をEP Sheetの使用中リストから削除する(ステップS1030)。
(単一外部プロセスでの異常の検出)
前述のFilter A1(2401)がスタートさせたタイマーが一定時間を越えてタイムアウトした場合、Filter A1(2401)は、単一外部プロセス2700に異常が発生したと判定する。すなわち、処理中のジョブが処理完了することなく、一定時間が経過した場合に異常が発生したと判定する。Filter A1(2401)は、Locator2500に異常を通知するTimeout Messageを送り、制御プロセスであるJob Controller2300にも異常を通知する。Job Controller2300は、この異常通知を受けるとジョブの失敗をProxy2200に伝える。
前述のFilter A1(2401)がスタートさせたタイマーが一定時間を越えてタイムアウトした場合、Filter A1(2401)は、単一外部プロセス2700に異常が発生したと判定する。すなわち、処理中のジョブが処理完了することなく、一定時間が経過した場合に異常が発生したと判定する。Filter A1(2401)は、Locator2500に異常を通知するTimeout Messageを送り、制御プロセスであるJob Controller2300にも異常を通知する。Job Controller2300は、この異常通知を受けるとジョブの失敗をProxy2200に伝える。
(リトライの処理)
図9は、Filter A2(2402)が単一外部プロセス2700でのジョブをリトライする場合のシーケンス図である。本実施形態では、Filter A1(2401)のジョブにより単一外部プロセス2700で異常が発生し、タイムアウトするまでの間にFilter A2(2402)のジョブが依頼され、かつジョブの依頼後にタイムアウトした場合の流れを示す。本実施形態では、Filter A1(2401)のジョブによって単一外部プロセス2700で異常が発生したことにより、単一外部プロセス2700を再起動し、Filter A2(2402)のジョブをリトライする処理について説明する。
図9は、Filter A2(2402)が単一外部プロセス2700でのジョブをリトライする場合のシーケンス図である。本実施形態では、Filter A1(2401)のジョブにより単一外部プロセス2700で異常が発生し、タイムアウトするまでの間にFilter A2(2402)のジョブが依頼され、かつジョブの依頼後にタイムアウトした場合の流れを示す。本実施形態では、Filter A1(2401)のジョブによって単一外部プロセス2700で異常が発生したことにより、単一外部プロセス2700を再起動し、Filter A2(2402)のジョブをリトライする処理について説明する。
まず、Filter A1(2401)は、タイムアウトしたと判定するとTimeout MessageをLocator2500に送信する(ステップS2111)。この時点では、Locator2500が保持するEP Sheetの使用中リストには、Filter A1(2401)とFilter A2(2402)が登録されている。次に、Locator2500は、Timeout Messageを受信すると、EP Sheetのステータスを「異常」に変更する(ステップS1110)。そして、Filter A1(2401)をEP Sheetの使用中リストから削除する(ステップS1120)。これは、タイムアウトをしたFilter A1(2401)のジョブによって単一外部プロセス2700が異常状態に陥った可能性が高いからである。次に、Locator2500は、使用中リストに残ったFilter(本実施形態では、Filter A2(2402))宛てにCaution Messageを送る(ステップS1130)。Caution Messageは、単一外部プロセス2700での異常を各Filterに通知するものである。
Caution Messageを受け取ったFilter A2(2402)は、リトライフラグを立てる(ステップS2122)。リトライフラグは、そのFilterが単一外部プロセス2700に依頼したジョブがリトライの対象であるか否かを示すフラグである。リトライフラグが立っているFilter A2(2402)は、ジョブをリトライする権利を有する。また、リトライフラグが立っている間、単一外部プロセス2700は、再起動され(ステップS1140)、単一外部プロセス2700からFilter A2(2402)に対しエラー通知が送られる(ステップS3110)。これは、単一外部プロセス2700で処理中だったジョブが強制的に中断されるためである。Filter A2(2402)は、リトライフラグが立っている間、単一外部プロセス2700のエラー通知を受け取っても何もしない。こうすることで、単一外部プロセス2700が再起動するまでジョブを待機させることができる。
単一外部プロセス2700の再起動後、Locator2500は、使用中リストに残ったFilter A2(2402)にResponse Messageを送信しリトライを開始させる(ステップS1150)。そして、Filter A2(2402)は、リトライフラグを下ろし(ステップS2132)、単一外部プロセス2700にジョブを依頼する(ステップS2142)。ジョブが正常に処理されれば、単一外部プロセス2700から処理結果がFilter A2(2402)に送られる(ステップS3120)。そして、その後の処理は、正常時の処理と同様であり、Filter A2(2402)は、Locator2500にDone Messageを送信し(ステップS2152)、単一外部プロセス2700を使用し終えたことを通知する。Filter A2(2402)は、その後、次のFilterまたはJob Controller2300へ結果を渡す。次に、Locator2500は、Filter A2(2402)をEP Sheetの使用中リストから削除する(ステップS1160)。
(ジョブの待機)
図10は、Filter A1(2401)がタイムアウトした直後にFilter A3(2403)がLocator2500に単一外部プロセス2700についてクエリーしてきたときの処理を示すシーケンス図である。あるFilterでタイムアウトが発生した後にLocator2500が受け付けたジョブは、単一外部プロセス2700が再起動するまで待機させられる。
図10は、Filter A1(2401)がタイムアウトした直後にFilter A3(2403)がLocator2500に単一外部プロセス2700についてクエリーしてきたときの処理を示すシーケンス図である。あるFilterでタイムアウトが発生した後にLocator2500が受け付けたジョブは、単一外部プロセス2700が再起動するまで待機させられる。
まず、Filter A1(2401)からTimeout MessageがLocator2500に送信されると(ステップS2211)、Locator2500は、EP Sheetのステータスを「異常」に変更する(ステップS1210)。前述の通り、ステータスが「異常」である場合、Locator2500は、他のFilterから新たに依頼されるジョブをEP Sheetの待機中リストに登録する。本実施形態では、Filter A3(2403)から単一外部プロセスについてクエリーがされる(ステップS2213)。従って、Filter A3(2403)は、Locator2500により、EP Sheetの待機中リストに登録される(ステップS1220)。次に、単一外部プロセス2700が再起動される(ステップS1230)と、Locator2500は、Filter A3(2403)をEP Sheetの待機中リストから使用中リストに移す(ステップS1240)。そして、Locator2500は、EP Sheetのステータスを「処理可能」に変更し(ステップS1250)、ジョブを待機させるモードを解除する。使用中リストに移されたFilter A3(2403)は、Locator2500からResponse Messageを受け取り(ステップS1260)、待機させていたジョブを、単一外部プロセス2700に依頼する(ステップS2223)。
単一外部プロセス2700で異常が発生したときの処理(図9および図10に示す処理)は、図11のようにまとめることができる。図11は、図6のステップS002で異常通知を受け取った場合のステップ200の処理を示す。図11に示す各ステップS210〜S240は、図9および図10に示す処理と対応している。単一外部プロセス2700で障害が発生した場合、まず。復旧処理中に単一外部プロセス2700に依頼されるジョブを待機させる(ステップS210)。次に、単一外部プロセス2700を再起動し(ステップS220)、障害に巻き込まれて失敗したジョブに対しては、単一外部プロセスでの処理をリトライする(ステップS230)。そして、ジョブの待機状態を解除する(ステップS240)。
以上、本実施形態によれば、複数ジョブの並列処理において、新たに障害に巻き込まれるジョブを無くし、単一外部プロセス2700での障害で失敗する処理の数を最小限に抑えることが可能となる。
(第2実施形態)
本実施形態では、各Filterと単一外部プロセス2700間で、ストリーミング形式で変換データを転送する場合の障害の復旧方法について説明する。本実施形態の障害の復旧方法では、ジョブのリトライの過程で単一外部プロセス2700の異常状態を引き起こしたジョブを特定する。
本実施形態では、各Filterと単一外部プロセス2700間で、ストリーミング形式で変換データを転送する場合の障害の復旧方法について説明する。本実施形態の障害の復旧方法では、ジョブのリトライの過程で単一外部プロセス2700の異常状態を引き起こしたジョブを特定する。
Filterは、単一外部プロセス2700にジョブを依頼する際、データをストリーミング形式で転送し、単一外部プロセス2700は、受け取ったデータから順に変換処理を行う。単一外部プロセス2700で異常が発生すると、Filterからのデータの転送が進行しなくなる。これにより、Filterは、第1実施形態と同様、タイムアウトによって単一外部プロセスの異常を検出することも可能であるが、データ転送の進行度をもとに単一外部プロセス2700の異常を検出することも可能となる。例えば、転送済みのデータ転送量がある一定時間変化しなかった場合、単一外部プロセス2700に異常があると判定できる。本実施形態では、異常を早期に検出するため、単一外部プロセス2700の異常検出方法として後者の手法を採用する。
ここで、単一外部プロセス2700の異常の発生原因となったジョブを特定する手法の概要について図12を用いて説明する。単一外部プロセス2700で複数のジョブが並列処理されている最中に単一外部プロセス2700で異常が発生すると、処理中のジョブが同時に停止する。このとき、ジョブのタイムアウトによって単一外部プロセス2700の異常状態を検出するのは、処理中であったジョブの中で最も古いジョブである。しかしながら、どのジョブが原因で異常が発生したのかをその場で特定することは難しい。例えば、図12は、単一外部プロセス2700に5つのFilterからジョブがJob1、Job2、Job3、Job4、Job5の順番に依頼され、処理が進行する場合の概要を示す図である。本実施形態では、Job1、Job2、Job3が並列処理されている途中に、Job2が原因で単一外部プロセス2700に異常が発生したとする。Job1とJob3は、異常発生時にJob2と共に処理が進行しなくなってしまう。この異常状態を検出するのは、上述のように、最も古いジョブであるJob1である。ここで、Job4は、単一外部プロセス2700で異常が発生し、Job1が異常を検出するまでの間に単一外部プロセス2700に依頼されたものとする。また、Job5は、Job1が異常を検出した後に単一外部プロセス2700に依頼されようとしているものとする。
本実施形態に係るジョブをリトライする場合の概要を図13に示す。本実施形態では、リトライの対象となるのはJob1が単一外部プロセス2700の異常を検出した際に、単一外部プロセス2700で処理をしていたジョブである。すなわち、Job1、Job2、Job3、Job4がリトライの対象となる。図13では、実線の矢印がジョブの進行度合いを表し、実線の右端が丸いジョブは処理が正常終了したことを表す。また、それら実線の下に描かれた灰色の線はジョブの制限時間を表す。ジョブの制限時間とは、ジョブのデータ転送が滞ってからある一定時間後にタイムアウトするよう設定されている。ジョブのリトライは、二段階に分けることができ、第一段階では異常の原因特定手法を使い、原因特定後は第二段階として第1実施形態と同じ流れでリトライを行う。
図14は、上記の一段階目の異常原因特定手法の処理を示すフローチャートである。本実施形態では、リトライの対象となるジョブを、開始時刻に差をつけながらリトライさせる。ジョブをリトライさせる場合の順番については、図13に示すように、リトライ前のジョブが投入された順番でなく、ドキュメントのサイズやページ数などから決定するジョブのサイズに基づいて決まる順番であってよい。このとき、リトライ対象のジョブを依頼するFilterは、前回の処理実行時に単一外部プロセス2700に転送したデータサイズを記憶し、リトライ時のデータ転送量がそれを上回るかどうかを監視する。ここでリトライ時のデータ転送量が前回のそれを上回った場合、これは単一外部プロセス2700の異常状態の原因となったジョブではないと判定する。まず、障害を引き起こしたジョブを特定する処理が開始されると(ステップS500)、リトライ対象のジョブが複数ある場合、その1つを単一外部プロセス2700に投入してリトライを開始する(ステップS600)。次に、当該ジョブが異常の原因か否かを判定する(ステップS510)。すなわち、当該ジョブの転送量(進行度)がリトライ前の転送量(進行度)を超えたか否かを判定する。
当該ジョブの転送量がリトライ前の転送量を超えた場合(Yes)、すなわち、当該ジョブが異常の原因ではない場合、ステップS520に進み、リトライ対象のジョブが残っているか否かを判定する(ステップS520)。ジョブが残っている場合(Yes)、ステップS600に戻って、次のジョブのリトライを開始する。一方、ジョブが残っていない場合(No)、処理を終了する。ここで注意したいのは、ジョブのリトライが排他処理ではないという点である。
ステップS510で、当該ジョブの転送量がリトライ前の転送量を超えない場合(No)、すなわち、リトライ時のデータ転送量が前回のそれを上回ることができずデータ転送が停滞した(当該ジョブが異常の原因である)場合、ステップS700に進む。そして、異常の原因であるジョブが特定されたので、後述の図18に示す処理を行って(ステップS700)、処理を終了する。
ここで、図14に示す処理を図13に適用する場合について説明する。図13において、ジョブのリトライは、Job4、Job3、Job2、Job1の順に行われている。なお、リトライするジョブの順番については後述する。まず、Job4のリトライを開始する。ここで、Job4は、前回の処理では単一外部プロセス2700で異常が発生した後に投入されたので、前回はデータ転送が全く進んでいないことになる。従って、リトライを開始し、データ転送が進み始めた時点で、リトライ前の転送量を超えることとなるので、Job4は、単一外部プロセス2700の異常の原因ではないと判定され、次のJob3のリトライが始まる。Job3がリトライで前回の処理におけるデータ転送量を超えると、異常の原因でないと判定されるので、次のJob2のリトライが開始される。図13では、Job4とJob3は、順調に処理が進み正常に終了する。しかしながら、本実施形態では、Job2が単一外部プロセス2700における異常状態の原因であるため、Job2は、異常発生時のデータ転送量まで到達するとそれ以上データ転送が進まなくなり、結果としてデータの転送量が前回の転送量を上らない。また、Job2のデータ転送が一定時間滞るとJob2がタイムアウトする。
以上により、単一外部プロセス2700での異常の原因がJob2であると特定される。ここから、リトライは、第二段階、すなわち、第1実施形態と同じリトライ処理が行われる。具体的には、単一外部プロセス2700は、再起動され、リトライの順番を待っていたJob1のリトライとJob5の待機状態を解除する処理を行う。なお、Job2が異常の原因であったと特定された時点で、Job3やJob4の処理が終了していなかった場合は、第二段階のリトライでJob1、Job3、Job4の3つのジョブをリトライする。
次に、図14に示す処理の後、システムの障害復の旧方法について説明する。まず、第1実施形態とは異なる処理について説明する。図8において、ステップS2010で、FilterがLocator2500に単一プロセスについてクエリーする際、依頼したいジョブの変換対象となるドキュメントの大きさをLocator2500に情報として提供する。提供する情報は、例えば、ドキュメントのデータサイズでよく、ページ数でもよい。これを受けて、ステップS1010で、Locator2500は、EP Sheetの使用中リストにクエリー元であるFilterと変換対象ドキュメントの大きさを登録する。
なお、本実施形態では、Locator2500が管理するEP Sheetの単一外部プロセス2700のステータスに「リトライ」を追加する。すなわち、Locator2500は、「不在」「処理可能」「異常」「リトライ」の4種類のステータスで単一外部プロセス2700を管理する。また、EP Sheetで管理するリストをひとつ追加し、これを「リトライリスト」と呼ぶ。リトライリストは、リトライするジョブの依頼元であるFilterのリストである。
本実施形態では、Filterは、単一外部プロセス2700の異常を検出したとき、Locator2500にTimeout Messageを送信し異常を通知するが、この時、Job Controller2300には異常通知をしない。これは、異常を検出したFilterにもリトライの機会を与えるためである。ただし、リトライ中に単一外部プロセス2700の異常を検出したFilterは、Locator2500とJob Controller2300の両者に異常を通知する。以上が第1実施形態とは異なる処理である。
次に、図15〜18を用いて、あるFilterからTimeout MessageがLocator2500に届いた後の障害の復旧処理について説明する。なお、図15〜18は、ジョブのリトライに関するLocator2500の処理を示すフローチャートである。図15は、リトライ対象のFilterの処理を示すフローチャートである。図16は、Locator2500がFilterからTimeout Messageを受け取り、リトライを開始するまでの処理を示すフローチャートである。図17は、リトライ対象の次のジョブのリトライ処理を行う際のフローチャートである。図18は、障害を引き起こしたジョブが特定された際の処理を示すフローチャートである。
まず、図16で、Locator2500は、EP Sheetのステータスを「異常」に変更する(ステップS401)。そして、EP Sheetの使用中リストに登録されている全てのFilter(ジョブの依頼主)にCaution Message(異常)を送信する(ステップS402)。次に、図15で、Caution Messageを受け取ったFilterは、リトライフラグを立て(ステップS301)、単一外部プロセスに依頼していたジョブのデータをどこまで転送したかを記録する(ステップS302)。ここで、図16で、Locator2500は、単一外部プロセス2700を、Activator2550を通じて再起動する(ステップS403)。単一外部プロセス2700が再起動したらLocator2500は、EP Sheetのステータスを「リトライ」に変更する(ステップS404)。
次に、Locator2500は、EP Sheetの使用中リストに登録された情報を、ドキュメントのサイズが昇順になるよう並べ替えて、EP Sheetのリトライリストに登録する(ステップS405)。なお、リトライリストに登録したFilterの情報は、使用中リストから削除する。ここで、ジョブを並べ替えたのはリトライをドキュメントの大きさが小さいものから順に行うためである。すなわち、処理対象のドキュメントが小さいジョブの方がデータ転送や変換処理の進行が早く、そのジョブが単一外部プロセス2700の異常の原因であるか否かを早く突き止められる可能性が高いからである。また、リトライリストには、ドキュメントのサイズが昇順になるよう並べられている。従って、Locator2500は、図17に示す次のジョブのリトライを開始する場合(ステップS600)、リトライリストの先頭にあるジョブから順に対象のFilterにResponse Messageを送信する(ステップS601)。そして、Locator2500は、Response Messageを送ったFilterの情報をリトライリストから使用中リストに移し(ステップS602)、リトライするジョブの順番とリトライ中のジョブを管理する。
次に、図15で、Response Message(ジョブ依頼の許可)を受信したFilterは、単一外部プロセス2700に中断されたジョブを依頼し(ステップS303)、リトライを開始する。次に、Filterは、現在処理中(再処理中)の単一外部プロセス2700に転送するジョブのデータ転送量(進行度)が、ステップS302で記録したデータ転送量を超えるか否かを判定する(ステップS304)。データ転送量がステップS302で記録した転送量を超えた場合(Yes)、Filterは、依頼したジョブがリトライ前の転送量(進行度)を超えることを示すExceed MessageをLocator2500に送信する(ステップS305)。
そして、Locator2500は、図14に示すように、Exceed Messageを受け取るとEP Sheetのリトライリストを参照する(ステップS520)。そして、リトライ対象のジョブが残っている場合、リトライ対象である次のFilterにResponse Messageを送る(ステップS600)。ステップS520でリトライリストが空であれば(リトライ対象のジョブが残っていない場合)、異常の原因となったジョブは特定できなかったが、リトライですべてのジョブが成功したということになる。
一方、ステップS304で、データ転送が一定時間滞る場合、すなわち、前回ジョブのデータ転送量がステップS302で記録したデータ転送量を超える場合(No)、ステップS315に進む。この場合、Filterは、単一外部プロセス2700が異常状態にあると判定し、Locator2500にTimeout Messageを送信する(ステップS315)。次に、Filterは、Job Controller2300にも異常を通知する(ステップS316)。そして、Locator2500は、Timeout Messageを受信すると、単一外部プロセス2700の異常を引き起こしたのは、最後にResponse Messageを送った先のFilterのジョブである判定する(ステップS700)。そこで、Locator2500は、これをリトライ対象外のFilterとし、図18の処理に移る。Locator2500は、図9に示す単一外部プロセス2700の再起動のステップS220を行う。次に、Locator2500は、EP Sheetのリトライリストに登録されているFilterを使用中リストに移し(ステップS710)、実施形態1と同様に、図9に示す残りのジョブのリトライを実行する(ステップS230)。
なお、異常の原因となるジョブを特定できた場合も、リトライ対象のジョブがすべて処理に成功した場合も、最後に待機中のジョブの待機状態を解除する処理を行い(ステップS240)、システムを正常状態に戻す。
以上、本実施形態によれば、異常の原因となるジョブを特定することで、複数ジョブの並列処理において、新たに障害に巻き込まれるジョブを無くし、単一外部プロセス2700での障害で失敗する処理の数を最小限に抑えることが可能となる。
(他の実施例)
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施形態の機能を実現する1以上のソフトウェア(プログラム)を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の一つである。また、そのプログラムは、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給され、そのシステム或いは装置の1以上のコンピュータ(CPUやMPU等)によりそのプログラムが読み出され、実行される。つまり、本発明の一つとして、さらにそのプログラム自体、あるいは該プログラムを格納したコンピュータにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路(例えば、ASIC)によっても、本発明は実現可能である。
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施形態の機能を実現する1以上のソフトウェア(プログラム)を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の一つである。また、そのプログラムは、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給され、そのシステム或いは装置の1以上のコンピュータ(CPUやMPU等)によりそのプログラムが読み出され、実行される。つまり、本発明の一つとして、さらにそのプログラム自体、あるいは該プログラムを格納したコンピュータにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路(例えば、ASIC)によっても、本発明は実現可能である。
また、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
Claims (10)
- 単一プロセスを共有して複数のジョブの並列処理を行う情報処理システムであって、
前記単一プロセスにおいてジョブを処理中に発生した異常を検出する検出手段と、
前記検出手段により前記異常が検出された場合に前記単一のプロセスに依頼された新たなジョブを待機させる待機手段と、
前記単一プロセスを再起動させる起動手段と、
前記単一プロセスの再起動後に前記異常の発生時に処理中であったジョブを前記単一プロセスに再処理させる処理手段と
を備える
ことを特徴とする情報処理システム。 - 前記検出手段は、処理中のジョブが処理完了することなく一定時間が経過した場合、前記処理が開始された時間が最も早いジョブが前記異常の発生原因であると特定し、
前記処理手段は、前記異常の発生原因であるジョブを除いて、処理中であったジョブを前記単一プロセスに再処理させる
ことを特徴とする請求項1に記載の情報処理システム。 - 前記処理手段は、前記異常の発生時に処理中であったジョブを前記ジョブのサイズに基づく順番で再処理させ、
前記検出手段は、前記再処理するジョブの進行度に基づいて前記異常の発生原因のジョブを特定する
ことを特徴とする請求項1に記載の情報処理システム。 - 前記処理手段は、前記ジョブのサイズが小さいジョブから順番に、それぞれのジョブを再処理させる
ことを特徴とする請求項3に記載の情報処理システム。 - 前記検出手段は、前記異常を検出する前のジョブの進行度を記憶し、前記再処理中のジョブの進行度と比較することで前記異常の発生原因のジョブを特定する
ことを特徴とする請求項3または4に記載の情報処理システム。 - 前記検出手段は、前記再処理中のジョブの進行度が前記異常を検出する前のジョブの進行度を超えない場合、該ジョブが異常の発生原因であると特定する
ことを特徴とする請求項5に記載の情報処理システム。 - 前記待機手段は、前記処理手段が前記ジョブの再処理を完了した後に、前記新たなジョブの待機を解除し、
前記処理手段は、前記新たなジョブを単一プロセスに処理させる
ことを特徴とする請求項1〜6のいずれか1項に記載の情報処理システム。 - 単一プロセスを共有して複数のジョブの並列処理を行う情報処理装置であって、
前記単一プロセスにおいてジョブを処理中に発生した異常を検出する検出手段と、
前記検出手段により前記異常が検出された場合に前記単一のプロセスに依頼された新たなジョブを待機させる待機手段と、
前記単一プロセスを再起動させる起動手段と、
前記単一プロセスの再起動後に前記異常の発生時に処理中であったジョブを前記単一プロセスに再処理させる処理手段と
を備える
ことを特徴とする情報処理装置。 - 単一プロセスを共有して複数のジョブの並列処理を行う情報処理装置の制御方法であって、
前記単一プロセスにおいてジョブを処理中に発生した異常を検出する検出工程と、
前記検出手段により前記異常が検出された場合に前記単一のプロセスに依頼された新たなジョブを待機させる待機工程と、
前記単一プロセスを再起動させる起動工程と、
前記単一プロセスの再起動後に前記異常の発生時に処理中であったジョブを前記単一プロセスに再処理させる処理工程と
を有する
ことを特徴とする情報処理装置の制御方法。 - 請求項1〜7のいずれか1項に記載の情報処理システムの手段としてコンピュータに機能させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014166633A JP2016042338A (ja) | 2014-08-19 | 2014-08-19 | 情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014166633A JP2016042338A (ja) | 2014-08-19 | 2014-08-19 | 情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016042338A true JP2016042338A (ja) | 2016-03-31 |
Family
ID=55592048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014166633A Pending JP2016042338A (ja) | 2014-08-19 | 2014-08-19 | 情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016042338A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157569A (zh) * | 2021-04-06 | 2021-07-23 | 深圳市捷视飞通科技股份有限公司 | 自动化测试方法、装置、计算机设备和存储介质 |
KR20220016836A (ko) | 2019-06-06 | 2022-02-10 | 주식회사 소니 인터랙티브 엔터테인먼트 | 정보 처리 장치 및 이미지 표시 방법 |
US11904247B2 (en) | 2019-06-06 | 2024-02-20 | Sony Interactive Entertainment Inc. | Information processing apparatus and image display method for superimposing another image on a content image |
-
2014
- 2014-08-19 JP JP2014166633A patent/JP2016042338A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220016836A (ko) | 2019-06-06 | 2022-02-10 | 주식회사 소니 인터랙티브 엔터테인먼트 | 정보 처리 장치 및 이미지 표시 방법 |
US11904247B2 (en) | 2019-06-06 | 2024-02-20 | Sony Interactive Entertainment Inc. | Information processing apparatus and image display method for superimposing another image on a content image |
US12076646B2 (en) | 2019-06-06 | 2024-09-03 | Sony Interactive Entertainment Inc. | Information processing device and image display method |
CN113157569A (zh) * | 2021-04-06 | 2021-07-23 | 深圳市捷视飞通科技股份有限公司 | 自动化测试方法、装置、计算机设备和存储介质 |
CN113157569B (zh) * | 2021-04-06 | 2024-05-24 | 深圳市捷视飞通科技股份有限公司 | 自动化测试方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5885410B2 (ja) | プルプリントシステム、プリントサーバおよびその制御方法、並びにプログラム | |
JP4440107B2 (ja) | ネットワーク内の共用資源を使用する方法および構成 | |
US20120086978A1 (en) | Cloud computing system, information processing method, and storage medium | |
KR101409508B1 (ko) | 정보 처리 장치, 그의 인쇄 데이터 처리 방법, 및 그의 프로그램을 저장하는 저장 매체 | |
US9160621B2 (en) | Network system, server, information processing apparatus, log registration method, and program | |
US9720776B2 (en) | Server system, method for controlling the same, and program for executing parallel distributed processing | |
US11385846B2 (en) | Printing system, server, and printing method | |
US10990334B2 (en) | System, server and method of controlling the system and method of controlling the server | |
US8589534B2 (en) | Device information management apparatus, device information management method, and storage medium which operates during a failure | |
JP2002366317A (ja) | 印刷システム及び印刷制御装置及び方法 | |
EP2913981B1 (en) | Image forming system, relay server, communication controlling method and non-transitory computer readable recording medium | |
JP2016042338A (ja) | 情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム | |
US11422762B2 (en) | Method and server for providing cloud print service | |
JP5717887B1 (ja) | 印刷システム、プリントサーバおよび印刷ジョブの投入方法 | |
US9250841B2 (en) | Print server, control method of print server, and storage medium | |
JP6335527B2 (ja) | システム、システムの制御方法およびコンピュータプログラム | |
JP2015022682A (ja) | 印刷システム、方法、及びプログラム | |
JP6188842B2 (ja) | 印刷システム、サーバおよびその制御方法、並びにプログラム | |
JP2015005149A (ja) | クラウドプリントにおけるプリントサーバ障害時のリカバリ方法 | |
JP2020048126A (ja) | 中継システム | |
JP2006185229A (ja) | オンライン同期処理方法及び装置 | |
JP4155512B2 (ja) | 多重アクセス制御システムおよびその制御方法 | |
JP2000155664A (ja) | プリント・サーバ、ネットワーク・プリント・システム、及びネットワーク・プリント・システムにおけるプリント制御方法 | |
JP3270400B2 (ja) | 印刷処理クラスタシステム | |
JP2000339112A (ja) | ネットワークプリンタシステム |