Sun Cluster データサービス開発ガイド (Solaris OS 版)

クライアントに対するサーバーの応答方法

登録要求を受信したサーバーは、登録を処理したあと、クライアントが開いた TCP 接続上で SC_REPLY メッセージを送信します。このあとサーバーは接続を閉じます。クライアントは、サーバーから SC_REPLY メッセージを受信するまで TCP 接続をオープン状態に保つ必要があります。

    クライアントは次のような作業を行います。

  1. サーバーに対して TCP 接続を開きます。

  2. 接続が「writable (書き込み可能)」になるまで待機します。

  3. SC_CALLBACK_REG メッセージ (このメッセージには ADD_CLIENT メッセージが入っている) を送信します。

  4. サーバーから SC_REPLY メッセージが到着するのを待機します。

  5. サーバーから SC_REPLY メッセージを受け取ります。

  6. サーバーが接続を閉じたことを示すインジケータを受信します (ソケットから 0 バイトを読み取る)。

  7. 接続を閉じます。

    その後クライアントは以下の作業を行います。

  1. サーバーに対して TCP 接続を開きます。

  2. 接続が「writable (書き込み可能)」になるまで待機します。

  3. SC_CALLBACK_REG メッセージ (このメッセージには REMOVE_CLIENT メッセージが入っている) を送信します。

  4. サーバーから SC_REPLY メッセージが到着するのを待機します。

  5. サーバーから SC_REPLY メッセージを受け取ります。

  6. サーバーが接続を閉じたことを示すインジケータを受信します (ソケットから 0 バイトを読み取る)。

  7. 接続を閉じます。

クライアントから SC_CALLBACK_REG メッセージを受け取るたびに、サーバーは同じ接続に SC_REPLY メッセージを送信します。このメッセージは、処理が正常に完了したか失敗したかを示すものです。SC_REPLY メッセージの XML ドキュメントタイプ定義とこのメッセージ内で示されるエラーメッセージについては、SC_REPLY XML DTD」を参照してください。

SC_REPLY メッセージの内容

SC_REPLY メッセージは、処理が正常に完了したか失敗したかを示します。このメッセージには、CRNP メッセージのバージョン、ステータスコード、およびステータスコードの詳細を説明したステータスメッセージが含まれます。次の表は、ステータスコードの値を説明しています。

ステータスコード 

説明 

OK

メッセージは正常に処理されました。 

RETRY

一時的なエラーのためにクライアントの登録はサーバーに拒否されました。クライアントは別の引数を使用して登録をもう一度試す必要があります。 

LOW_RESOURCE

クライアントのリソースが少ないため、クライアントはあとでもう一度試す必要があります。クラスタのクラスタ管理者は、クラスタのリソースを増やすこともできます。 

SYSTEM_ERROR

重大な問題が発生しました。クラスタのクラスタ管理者に連絡してください。 

FAIL

承認の失敗などの問題が発生し、登録が失敗しました。 

MALFORMED

XML 要求の形式が正しくないため解析が失敗しました。 

INVALID

XML 要求が無効です (XML 仕様を満たしていない)。 

VERSION_TOO_HIGH

メッセージのバージョンが高すぎて、メッセージを正常に処理できませんでした。 

VERSION_TOO_LOW

メッセージのバージョンが低すぎて、メッセージを正常に処理できませんでした。 

クライアントによるエラー状況の処理

通常、SC_CALLBACK_REG メッセージを送信するクライアントは登録の成功または失敗を知らせる応答を受け取ります。

しかし、クライアントが登録を試みる際にサーバーからの SC_REPLY メッセージの送信を妨げるエラーが発生することがあります。この場合、エラーが発生する前に登録が正常に完了することも、登録が失敗することも、あるいは登録処理が行われないまま終了することもあります。

サーバーはクラスタ内においてフェイルオーバー (高可用) サーバーとして機能する必要があるため、このエラー状況はサービスの終了を意味するわけではありません。実際、サーバーは新しく登録されたクライアントに対してすぐにイベント送信を開始できます。

これらの状況を修復するには、クライアントは次の作業を行う必要があります。