2018年2月10日土曜日

gRPC 1.9.0 がリリースされていました

gRPC を使ったプログラムをデバッグ実行していると TaskCanceledException 例外が頻発するようになりました。VisualStudio のデバッグコンソールが例外ログで埋まる結果に。調べてみると、gRPC の Channel の内部で 1 秒ごとにタイムアウトが発生しているようです。



例外の発生


Grpc.Core.Channel インスタンスの生成後、デバッグ実行時に約 1 秒おきに次のような例外ログが出力されるようになりました。 例外は内部で処理され、プログラムの実行は停止されません。gRPC の通信処理も正常に処理されます。
例外がスローされました: 'System.Threading.Tasks.TaskCanceledException' (mscorlib.dll の中)

情報収集


GitHub の Issue でこの現象が検討されているのを発見しました。

Performance issues caused by expensive exceptions thrown in RunConnectivityWatcherAsync #13227

Channel クラスの WaitForStateChangedAsync メソッドの中でチャネルの状態を監視しており、ここで 1 秒おきにタイムアウトが発生し、TaskCanceledException がスローされているとのことです。これは 1.9.0-pre2 で解決しているようです。


1.9.0 に更新


NuGet で 1.9.0 に更新したところ、確かに例外は発生しなくなりました。
ただ、結局なぜ突然発生したのかはわからず。


0 件のコメント:

コメントを投稿

paiza のスキルチェックをやってみました

いまさら感はありますが、 paiza のスキルチェックをやってみました。指定された時間内にコードを書いてユニットテストにかけ、その結果を基に評価を数値化してくれるというものですが、ゲーム感覚で空き時間を見つけて進めていこうと考えています。 どうやら時間が短いほど高い評価を得...