2017-10-30 5 views
0

grpc-javaサーバーが受け取るすべての呼び出しをログに記録するカスタムServerInterceptorがあります。 ServerCallnext::startCallにラップし、SimpleForwardingServerCallclose(Status,Metadata)を上書きし、コールのステータスと経過時間の合計をinterceptCallcloseの間で記録します。私たちは、これにより、ロギングの状態と、受信されたすべてのコールの経過時間を追跡することが期待されました。すべてのgRPC呼び出しの結果をgrpc-javaサーバーに確実に記録できますか?

インターセプタがinterceptCallの本体にログインしている場合があります。次に、内部インターセプタがinterceptCallにログインしましたが、リクエストのログがこれ以上表示されませんでした。他の状況では、その時点でクライアントとサーバーの間に接続の問題があったことが示唆されます。

RPC呼び出しごとにServerCall::close(Status,Metadata)を呼び出すことはできますか?クライアントまたは接続の誤動作に関係なくもしそうでなければ、コールが「死んだ」ことを示すために欠落しているかもしれない他のコールバックがありますか?

答えて

1

ServerCall.Listener.onComplete()ServerCall.Listener.onCancel()が必要です。 ServerCall.close()が正常に処理された後にonComplete()が呼び出されます。 onCancel()は、通信エラーまたはキャンセルに使用されます。アプリケーションがServerCall.close()を呼び出した後にonCancel()を受け取ることが可能であることに注意してください。

関連する問題