Oracle Solaris Cluster リファレンスマニュアル

印刷ビューの終了

更新: 2015 年 9 月
 
 

scds_svc_wait(3HA)

名前

scds_svc_wait - 指定のタイムアウト時間が経過するまでモニター対象のプロセスの終了を待機する

形式

cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib –l dsdev#include <rgm/libdsdev.h>
     scha_err_t scds_svc_wait(scds_handle_t handle, time_t timeout);

説明

scds_svc_wait() 関数は、指定のタイムアウト時間が経過するまでモニター対象のプロセスグループの終了を待機します。この関数は、呼び出し元の START メソッドに渡されるリソースの scds_pmf_start(3HA) によって起動されたすべてのプロセスグループを待機します。scds_svc_wait() 関数は、リソースの Retry_interval プロパティーと Retry_count プロパティーを使用して、待機する終了プロセス数を制限します。Retry_interval 内の終了プロセス数が Retry_count 個に達した場合、scds_svc_wait()SCHA_ERR_FAIL とともに終了します。

失敗プロセス数が Retry_count を下回った場合、プロセスは再起動されます。scds_svc_wait() は、タイムアウト時間がすべて経過するまで、さらにプロセスの終了を待機します。失敗プロセス数は、そのあとの scds_svc_wait() 呼び出しでも計測されます。

パラメータ

次のパラメータがサポートされます。

handle

scds_initialize(3HA) から返されるハンドルです。

timeout

タイムアウト時間 (秒) です。

戻り値

scds_svc_wait() 関数の戻り値は次のとおりです。

0

関数の実行に成功。

0 以外

関数の実行に失敗。

エラー

SCHA_ERR_TIMEOUT

関数はタイムアウト。

SCHA_ERR_NOERR

プロセスの終了が行われなかったが、プロセスが正常に再起動された。

SCHA_ERR_FAIL

失敗回数が Retry_count プロパティーの値に到達。

SCHA_ERR_STATE

システムエラー、または予期せぬエラーが発生。

その他のエラーコードについては、scha_calls(3HA) を参照してください。

使用例 1 START メソッドの scds_svc_wait() の使用法

次の例では、START メソッド内で scds_svc_wait を使用して、サービスの起動に失敗した場合ただちに終了する方法を示します。scds_pmf_start() を使ってアプリケーションプロセスを起動したあと、START メソッドは、処理が正常終了して戻る前にアプリケーションが完全に初期化され、使用可能な状態になるまで待機します。アプリケーションの起動に失敗した場合、START メソッドは、エラーを戻して終了する前に、Start_timeout 時間が経過するまで待機する必要があります。次の例のように、scds_svc_wait() を使用することで、START メソッドによるアプリケーションの再起動回数(Retry_count) を指定できます。サービスを起動できない場合、START メソッドはエラーを出してただちに終了します。

/*
 * scds_svc_wait is a subroutine in a START method to
 * check that the service is fully available before returning.
 * Calls svc_probe() to check service availability.
 */
int
svc_wait(scds_handle_t handle)
{
	while (1) {
		/* Wait for 5 seconds */
		if (scds_svc_wait(handle, 5) != SCHA_ERR_NOERR) {
			scds_syslog(LOG_ERR, "Service failed to start.");
			return (1);		/* Start Failure */
		}
		/* Check if service is fully up every 5 seconds */
		if (svc_probe(handle) == 0) {
			scds_syslog(LOG_INFO, "Service started successfully.");
			return (0);
		}
	}
	return (0);
}

ファイル

/usr/cluster/include/rgm/libdsdev.h

インクルードファイル

/usr/cluster/lib/libdsdev.so

ライブラリ

属性

次の属性については、attributes(5) を参照してください。

属性タイプ
属性値
使用条件
ha-cluster/developer/api
インタフェースの安定性
発展中

関連項目

scds_initialize(3HA), scds_pmf_start(3HA), scha_calls(3HA), attributes(5), r_properties(5)

  • START メソッドがリソース上の Start_timeout 設定を超過した場合、Resource Group Manager (RGM) は START メソッドを強制終了します。この動作は、START メソッドが scds_svc_wait() の終了を待機しているときも変わりません。

  • リソース上の Retry_interval の値が Start_timeout の値より大きい場合、START メソッドは RGM によってタイムアウトになります。この動作は、失敗回数が Retry_count に達していない場合も変わりません。

  • START メソッドの複数の scds_pmf_start() を呼び出して複数のプロセスを起動した場合、scds_svc_wait() は終了したプロセスグループを起動します。プロセスグループ間の依存関係は強制されません。プロセスグループ間に依存関係があり、失敗時にその他のプロセスグループの再起動を要求するようなプロセスグループが存在する場合は、scds_svc_wait() を使用してはいけません。プロセスグループの健全性検査の間待機する場合は、sleep() を使用してください。