t

メモ

An Bug of AsyncExecutor of Slick

既にうろ覚えだが Slick 3.3.0 で取り込まれた "critical bug in AsyncExecutor #1856" の修正についてメモしておく。

AsyncExecutor の内部状態がおかしくなるのが #1856 で起きていたことで、これは PrioritizedRunnable が持つ DB への既存の接続を閉じたかを表すフラグの誤操作により引き起こされていた。そして誤操作の原因は一つの StreamingContext を(意図しないタイミングで)二つの PrioritizedRunnable から触っていたことだった。PrioritizedRunnable を実行する AsyncExecutor のバグというより PrioritizedRunnable を作成する DatabaseDef のバグと言えるかもしれない。

#1856 で報告されていた症状は怪しいスタックトレースが出力される(が当該スレッドは元々終了しようとしていたものなので一見動作に支障はない)というものだが、AsyncExecutor の内部状態がおかしくなっているので他の問題も起こしていた可能性はありそう。

修正は #1914 で行った。フラグを操作する場所を変えて、余計なフラグ設定が行われないようにしている。