NodeJS サーバーに接続する GRPC クライアントで GRPC バージョン: 1.1.2 & JDK バージョン:1.8 を使用しています。Java クライアントは正常に接続できますが、クライアントから切断すると、サーバー側で常に以下の例外が表示されます。
例外 (サーバー上のみ)
E0410 15:03:19.674531000 140735121084416 ssl_transport_security.c:439] SSL_read returned 0 unexpectedly.
E0410 15:03:19.674829000 140735121084416 secure_endpoint.c:185] Decryption error: TSI_INTERNAL_ERROR
次の呼び出しで GRPC Java 接続をシャットダウンしています。
channel.shutdown().awaitTermination(5, TimeUnit.SECONDS); //channel is ManagedChannel
この呼び出しを行う前に他のリソースをクリーンアップする必要がありますか、それとも別のメカニズムを使用してサーバーから完全に切断する必要がありますか?
編集 次のことも試してみると、同じエラーが発生することに気付きました。
channel.shutdown();
Mac で OpenSSL を使用しています - デフォルトの Mac バージョン (OpenSSL 0.9.8zh 2016 年 1 月 14 日) を変更したことを思い出します。
grpc の secure_endpoint.c
result = tsi_frame_protector_unprotect(ep->protector, message_bytes,
&processed_message_size, cur,
&unprotected_buffer_size_written);
gpr_mu_unlock(&ep->protector_mu);
if (result != TSI_OK) {
gpr_log(GPR_ERROR, "Decryption error: %s",
tsi_result_to_string(result));
break;
}