エラー処理 (RPC)
同期 RPC では、クライアントは成功または失敗のコードを使用して返すリモート呼び出しを行います。 非同期 RPC を使用すると、呼び出しが失敗する機会が増え、発生する場所とタイミングに応じて、これらのエラーが異なる方法で処理されます。 次の表では、呼び出しが失敗する方法と、その処理方法について説明します。
クライアント側のクリーンアップ
サーバー側のクリーンアップでは、重要な概念がハンドオフ ポイントです。 非同期呼び出しのサーバー側の処理中は、通常、呼び出しを受け取ったスレッド (ディスパッチャー スレッドとも呼ばれます) で一部の処理が実行され、必要に応じて、ディスパッチャー スレッドはメモリ ブロックに十分な状態を設定し、別のスレッド (ワーカー スレッドとも呼ばれます) に通知して呼び出しの処理を続行します。 ディスパッチャー スレッドがワーカー スレッドが ハンドオフ ポイント呼び出されたことを正常に通知する瞬間。
サーバー側のクリーンアップ
パイプの特殊エラー処理ケース
パイプを使用する場合、エラー処理には特別なケースがあります。 次の一覧では、エラーの原因と、エラーの処理方法について説明します。
障害の原因 | 処理方法 |
---|---|
クライアント呼び出しがプッシュされ、呼び出しが失敗します。 | RPC API 呼び出しは必要ありません。 すべての RPC 状態がクリーンアップされました。 |
パイプ内のがドレインされる前に、RpcAsyncCompleteCallクライアント呼び出し。 | 適切なパイプ入力エラー コードで呼び出しが失敗します。 |
クライアント呼び出しがプルされ、呼び出しが失敗します。 | RPC API 呼び出しは必要ありません。 すべての RPC 状態がクリーンアップされました。 |
クライアントまたはサーバーがプッシュを呼び出すか、間違った順序でプルします。 | 実行時は、パイプ入力エラーの状態を返します。 |
サーバーがプッシュまたはプルを呼び出すと、呼び出しが失敗します。 | Push はエラー コードを返します。 RpcAsyncCompleteCall呼び出す必要はありません。 |
サーバーは、パイプ ドレインされる前に RpcAsyncCompleteCall を呼び出します。 | パイプ呼び出しは、パイプの充填エラー状態を返します。 |
ディスパッチ後、受信操作は失敗します。 | 次にサーバーがプルを呼び出してパイプ データを受信すると、エラーが返されます。 |