2011年11月23日水曜日

こうして僕はrailsを遅くした。そしてそこそこ直した。


最近blogの更新が途絶えがちですが、githubが面白くて(汗)...

先日、ruby on rails 3.1.2と3.1.3が矢継ぎ早にリリースされたのですが、実は関与者の一人だったりします。自戒の意味もかねて、経緯とかを書いておきます。

・2011/10/31 無作為に選んだissueを直そうと思った。

このissueを調べ始めたのですが、
色々調べてみるとmysqlのdescribeの問題という事が判明し、結果的にschema dumperの出力がバグってるという事が分かった。

そこで、describeを使わない形(informationスキーマを利用)で修正した。

・2011/11/06 master/3-1-stableにマージされた。

その後やりとりがあって、直ってよかったねという事で取り込まれた。

・2011/11/18 rails 3.1.2がリリースされた。

そりゃま~、ARは初めてだったので嬉しかったです(リリースノートにも名前が載ったし)。

・2011/11/18深夜 問題発覚。

ActiveRecord 3.1.2 takes 10 times slower than 3.1.1」というissueがあがる。
良く見てみるとmysqlとあるじゃないか!というのも前のリリースからmysqlについて修正したの私だけ(汗)

その後、某スペイン人(Christos Zisopoulosさん)とのやりとりで、"多くのデータベースが存在するmysql"の場合、遅くなる事が判明。

schema dumperの時のみ、元の修正を利用する、pull requestが取り込まれましたが、
抜本解決ではないので、"show index from"を利用する形で修正を進めた。

・2011/11/19 早朝 修正完了。
・2011/11/19 AM9時頃 某スペイン人により効果が確認され、pull requestした。

その後、railsコミッタのjonleightonにマージしてもらう(master/3-1-stable)。

・2011/11/21 sprockets等他の問題も修正され、rails 3.1.3がリリースされた。

ちなみにsprocketsは
 「windows環境でasset pipe lineが失敗する」
 「ファイルの更新が反映されない場合がある」
問題があり、最終的に2.0.xにダウングレードされました。

途中「速くリリースしろゴラ!」とか言う人がいてビビッタ。

・2011/11/23

超大規模なデータセットの場合、問題がある可能性がありそうな為、再度「show create table」を利用する形で調整中。

・2011/12/5


「show create table」を利用する形での実装が、rails 3.2系にマージされました。


・2011/12/6


さらにrails 3.1系にもback portされました。


■雑感

・世界中で困っている人がいるかと思うとかなりびびった。某スペイン人には多謝。
・この手の、量に対するテストをどう実施していくかは、そもそも根本的な問題。
・私の嘘英語でも何とかやっていけてるのが驚異的。
・gitはコマンド多すぎるが、かなり便利。