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 で行った。フラグを操作する場所を変えて、余計なフラグ設定が行われないようにしている。