Varnish4.0.1が公開されました。
ついでに公式サイトもデザインが新しくなって見やすくなりました。
バージョンアップ自体は主にBugfixで、4.0.0がリリースされて報告されていたバグが基本的に修正されています。
幾つか重要度の高いbugfixがあるので4.0.0を入れた人は適用するのをおすすめします。
(僕が報告してたスレッドが開放されないなどのバグも修正されてました)
また、今回も機能変更と追加がかなりされています。
動作に関わるところをについて抜粋して紹介します。
機能変更
Persistent storageがdeprecatedになりました
ML見てたら不穏な動きが出てたのでどうなるかなーとおもってたんですがさっくり廃止予定になりました。
4.0.0になって多少使いやすくなったとおもったんですがパフォーマンスを維持しつつ整合性を確保するのがきつかったみたいです。
今後利用する際は-s deprecated_persistentと指定する必要があります。
また、やり取りでの想像ですが次のリリースで消すということはなさそうな気がします。
コード修正が必要になった段階で切り離すんじゃないかなと
vmod_std機能追加
クエリソート機能が追加されました(querysort)
vimeoのboltsortが取り込まれました。
sub vcl_recv{ //in:/?a=1&c=3&b=2 // :/?b=2&c=3&a=1 //out:/?a=1&b=2&c=3 set req.url = std.querysort(req.url); }
クエリをお手軽に正規化することが可能になりキャッシュ効率がよくなることが期待できます。
一つ注意事項があるとすればキー数は32に制限されていることです。
ただ、最新コード上はその制限が解除されており(というかリリース日当日に解除されてる)
次のリリースには取り込まれると思います。
32以上のキー数を扱う可能性がある場合はとりあえずこのComitを適用すればよいと思います
変換系のメソッドが追加されました
文字列->浮動小数(real)
//std.real([文字列], [パース失敗時のfallback値]) //out: //- VCL_Log 12.990 //- VCL_Log 0.000 std.log(""+std.real("12.99",0.0)); std.log(""+std.real("hoge",0.0));
浮動小数->時間(real2time)
//std.real2time([浮動小数]) //out: //- VCL_Log Wed, 25 Jun 2014 15:26:40 GMT //- VCL_Log Wed, 25 Jun 2014 15:26:40 GMT std.log(""+std.real2time(1403707478)); std.log(""+std.real2time(1403707478.999));
※若干例が悪いかも
時間->整数(time2integer)
//std.time2integer([時間]) //out: //- VCL_Log 1403707709 //- VCL_Log 1403707769 std.log(""+std.time2integer(now)); std.log(""+std.time2integer(now + 1m));
時間->浮動小数(time2real)
//std.time2real([時間]) //out: //- VCL_Log 1403707750.479 //- VCL_Log 1403707750.489 std.log(""+std.time2real(now)); std.log(""+std.time2real(now + 10ms));
VCL変更
日付の指定に年(y)を指定できるようになりました
365d = 1yです
その他変更
varnishncsaの%Dが整数に切り捨てられます
マイクロ秒単位なので特に影響ないと思います
varnishncsaで新しいフォーマットが追加されました
%I(全受信バイト数)と%O(全送信バイト数)が追加されました。
個人的に結構嬉しいです。
passがtransfer-encoding: chunkedに対応しました
今までreturn(pipe)じゃないとダメでした(builtin.vclでpipeしてた)
あとアップデートかけた時にVarnishのrestart走ります。(前まで無かったような気が・・・)
以下の組み合わせの場合は即死しますので注意してください
・persistentを利用している
・パッケージの自動アップデートが有効になっている
このケースの場合以下のコンボが成立します
1) パッケージの自動アップデートがかかる
2) 4.0.1でrestartがかかる
3) persistentの名前を置き換える必要があるので起動しない
4) ( ˘ω˘)
また、まだ告知はされていませんが3.0.6RC1が上がっているので近いうちに3系のアップデートも来るかもしれないです。
あと週末にでも別記事で4.1といった今後のリリーススケジュールについて書きます!