intra-mart Accel Platform / im-propagation 仕様書

初版 2014-05-01

«  5. セッション管理   ::   コンテンツ

6. 付録

6.1. デッドロック管理

6.1.1. デッドロック管理の概要

im-propagation では、複数のスレッドから同一の「データ処理クラス」が実行されないようロック制御されています。
そのため、複数のスレッドでデータの伝搬が発生し、かつ、実行される「データ変換クラス」が連続する場合、デッドロックが発生する可能性があります。
im-propagation には、デッドロックが発生した場合の検出機能が組み込まれています。
「データ処理クラス」をロックする際の待機時間や、デッドロック検知時間の設定は、「im-propagation 設定」に定義します。
設定ファイルの詳細は、「設定ファイルリファレンス - im-propagation 設定 」を参照してください。

6.1.2. デッドロック時の動作

デッドロックが発生する代表的なパターンを下図に示します。
../../_images/appendix_1.png
図 デッドロック発生時の例
デッドロックを検出すると、データの伝搬は失敗扱いとなり、PropagationManager#send() メソッドを実行した際に SendException が発生します。
送信側では、SendException を捕捉した場合、PropagationManager#abort() メソッドを呼び出してセッションの中断処理を行います。
すると、受信側にもセッションの中断処理を行わせるため、「データ処理クラス」の onAbort メソッドが呼び出されますので、後処理が必要な場合、このメソッド内で処理を行います。

«  5. セッション管理   ::   コンテンツ