リソースが RGM によって管理されなくなったとき、RGM は Fini メソッドを実行して、そのリソースの使用後のクリーンアップを行います。Fini メソッドは、通常、Init メソッドにより実行された初期化を元に戻します。
RGM は、次の状態が発生した場合、リソースが管理されなくなったノード上で Fini を実行します。
リソースを含むリソースグループが管理対象外状態に切り替わる。この場合、RGM はノードリストのすべてのノード上で Fini メソッドを実行します。
管理されているリソースグループからリソースが削除される。この場合、RGM はノードリストのすべてのノード上で Fini メソッドを実行します。
リソースを含むリソースグループのノードリストからノードが削除されます。この場合、RGM は削除されたノード上でのみ Fini メソッドを実行します。
「ノードリスト」はリソースグループの Nodelist またはリソースタイプの Installed_nodes リストのいずれかです。「ノードリスト」がリソースグループの Nodelist とリソースタイプの Installed_nodes リストのどちらを指すかは、リソースタイプの Init_nodes プロパティーの設定に依存します。Init_nodes プロパティーは RG_PRIMARIES または RT_INSTALLED_NODE に設定できます。大部分のリソースタイプでは、Init_nodes はデフォルトである RG_PRIMARIES に設定されます。この場合、Init メソッドと Fini メソッドは両方とも、リソースグループの Nodelist で指定されているノード上で実行されます。
Init メソッドが実行する初期化の種類は、次のように、ユーザーが実装した Fini メソッドが実行する必要があるクリーンアップの種類を定義します。
ノード固有の構成のクリーンアップ。
クラスタ全体の構成のクリーンアップ。
実装する Fini メソッドは、ノード固有の構成だけをクリーンアップするのか、それともノード固有の構成とクラスタ全体にわたる構成の両方をクリーンアップするのかを判断する必要があります。
特定のノード上でのみリソースが管理されなくなった場合、Fini メソッドはノード固有のローカル構成をクリーンアップできます。しかし、ほかのノード上ではリソースは引き続き管理されているため、Fini メソッドはクラスタ全体にわたるグローバル構成をクリーンアップしてはなりません。リソースがクラスタ全体にわたって管理されなくなった場合には、Fini メソッドはノード固有の構成とグローバル構成の両方についてクリーンアップを実行できます。実装する Fini メソッドのコードは、Fini メソッドを実行するローカルのノードがリソースグループのノードリストに含まれているかどうかを判定することによって、これら 2 つの場合を区別できます。
ローカルのノードがリソースグループのノードリストに含まれている場合は、リソースが削除されようとしているか、管理されない状態に移行しようとしています。リソースはどのノード上でもアクティブでなくなっています。この場合、実装する Fini メソッドでは、ローカルノード上のノード固有の構成だけでなく、クラスタ全体にわたる構成についてもクリーンアップする必要があります。
ローカルのノードがリソースグループのノードリストに含まれていない場合は、Fini メソッドでそのローカルノード上のノード固有の構成をクリーンアップできます。しかし、Fini メソッドでクラスタ全体にわたる構成をクリーンアップしてはなりません。この場合、ほかのノード上でリソースが引き続きアクティブになっています。
また、Fini は呼び出し回数に依存しないようにコーディングする必要もあります。つまり、Fini メソッドが以前の実行でリソースをクリーンアップした場合でも、以降の Fini 呼び出しは正常に終了します。