爆発物処理班

先々週、サーバ停止という致命的な事態をやってしまいました。
原因は、PostgreSQLの LOCK TABLE と SELECT によるデッドロック
自分でそのことを記事にしたのに、完全に見落としました orz
(単純にこの記事通りだったらポスグレがデッドロックを検出するんですが、プログラム内でセマフォをかけていたためシステムがフリーズ)


そんなことがあったので、緊急でバグ修正と相成りました。
・・・でも、それがものすごい怖い。



修正自体は簡単なものの、問題のコードはほかの人がやった癖のあるところ。
しかも、不用意にいじるとバグを呼ぶような仕掛けが施してある状態。
かといって、その罠に引っかかってしまったら、気付かれないまま本番環境に乗る事態になりかねない・・・。


作業中は、爆発物処理班のような心境でした。



それから、二週間がたちましたが今のところ無事に稼働中。
新たな問題が出る前に、こまめなリファクタリングを心がけようと思います。