馬鹿もーーんっ…!
なんだっ…!
このライブラリはっ…!
バグ持ち…!
致命的なバグ持ちじゃねえかっ…!
通るかっ…!こんなもん…!
Apacheモジュールでapr_memcacheを使っていたら、ひどいバグにぶち当たった。こいつはapr_socket_sendv()
等の結果をきちんとチェックしていないために、中途までしかデータが送られなかった場合にやりとりが破綻してしまう。ソケット通信系の関数はAPR_SUCCESS
が返れば成功なのではなく、きちんと*len
を検査しなければならない(ソケットのoptions
メンバを見てもよい)のに、それを怠っている。
悪いことにapr_memcache
はAPR_SUCCESS
が返る限りは接続を維持し、memcached
の方もプロトコル上サーバ側からは接続を切らないので、会話が噛み合わないまま接続が生き続ける。エラーとしては最初にAPR_EGENERAL
が起き、以後はEPIPE
(Broken Pipe)を発し続けることになる。(たまたま帳尻が合ったりすれば別だが)
これに気がついたのが本番投入後だったからしびれた。負荷テストはもっと真剣にやろう…。
しびれますたな。
apr_memcacheのバグ修正
先日のapr_memcacheの問題だが、修正を入れてしばらく動かしたが目立った問題は出ていない。サービスに本番投入してもいけているので、パッチを公開することにする。 apr_memcache 0.7.0リリースにはそもそも不具合があるので、Subversionレポジトリから最新のtrunk(執筆..
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.
Your point of view caught my eye and was very interesting. Thanks. I have a question for you.
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.
Explore the ranked best online casinos of 2025. Compare bonuses, game selections, and trustworthiness of top platforms for secure and rewarding gameplaycasino slot machine.