Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

401 lines (334 sloc) 36.336 kB

Riak 1.4.2 リリースノート

これはRiak 1.4.x系のバグフィックスのリリースです。

  • stats 関連の問題を解決
  • 1.4.1 からの不要なログを削除(Not foundのエラーなど)
  • 2iクエリのタイムアウト関連の問題を解決
  • バックエンドの壊れたデータに対する追加の安全策を導入
  • Riak Controlでの、ノードが非互換に見える不正なネゴシエーションを修正

解決された問題

Riak 1.4.1 リリースノート

これはバグフィックスのリリースです。主にセカンダリーインデックス、Riak Control、LevelDB に関する修正が含まれています。

  • riak_kv/615 で、完全一致のクエリに対するページネーションの問題が修正されました。

  • riak_kv/616 2iクエリでもタイムアウトを設定できるようになりました。

  • riak_kv/618 2iをMapReduceの入力として渡せなかった問題が解決しました。

  • riak_control/120 1.3系で動作するクラスタに1.4.0のノードを追加すると Riak Control がRiakノードをクラッシュさせる問題を解決しました。

  • leveldb/88 Basho 版の LevelDB の fadvise サポートが改善され、書き込み時の競合がいくつか解決されました。

Issues / PR's Resolved

Riak 1.4.0 リリースノート

主な新機能/改善点

バイナリフォーマットの改善 (Improved Binary Format)

Riakに保存されるデータのフォーマットがさらにコンパクトになりました。 新しいフォーマットはデータ保存時のオーバーヘッドを減らしています。 特に小さいオブジェクトや大きなバケット名、キー名、メタデータに対して効果を発揮します。

Riak1.4で新規に作ったRiakクラスターはデフォルトで新しいフォーマットが有効になっています。 Riak1.4へアップグレードする際は、アップグレードをおこなうと新しいフォーマットが有効になります。 新旧のフォーマットは双方共にサポートされますので、アップグレードに伴う追加のオペレーションは必要ありません。

どのフォーマットが用いられるかは app.configriak_kv セクションで、object_format を設定します。 設定値は v0v1 のどちらかであり、新しいフォーマットはv1です。

この新しいフォーマットはクラスターがサポートすればhandoff でも使用されます。

Riak1.4へアップグレードして新しいフォーマットを有効にしたユーザーが前バージョンへのダウングレードするには、 新しいフォーマットになっているデータを書きかえる必要があります(以前のバージョンのRiakは新しいフォーマットを読み込めません)。 riak-admin ではこのユーティリティが用意されています:

riak-admin downgrade-objects <kill-handoffs> [<concurrency>]

このユーティリティはダウングレードするにあたって、ノードごとに実行します。 <kill-handoffs>truefalse のどちらかの値をとります。falseの場合、 再フォーマットの前に実行中のhandoffを待ちます。trueであればノードが受信もしくは 送信している実行中のhandoffは全てkillされます。 再フォーマット中やその後はtransfer-limitが0に設定されます。 <concurrency>オプションは1以上の整数値を取ります。これはそのノード上で、 いくつのパーティションが並列で再フォーマットされるかを指定するものです。 デフォルトは2になっています。そしてクラスタ全体がダウングレードされることを見越して、 downgrade-objectsは推奨フォーマットを v0 に設定します。downgrade-objectsはエラーや、 ノードがクラッシュした場合に複数回実行できます。

riak attachの挙動を変更 (Changed behavior of riak attach)

riak attachにすでに慣れているユーザーは1.4での変更は注目に値します。 riak attachは稼働中のerlangノードと通信するためにerlangに提供されている named pipeを使用していました。この機能は素晴らしいのですが、偶然にも Ctrl-C を押してしまうと アタッチしたセッションと共に動作中のノードも終了させてしまいます。この振る舞いを今回、 -remsh (remote shell)を使ったノード通信に変更しました。これはCtrl-Cが稼働中のノードをkillしないので、より安全です。 分散erlangの問題にぶつかったり、-remsh が望ましくない場合は、以前のriak attachと同じ振る舞いする新しいコマンドの riak attach-direct を使ってください。

riak-admin transfers 改善 (riak-admin transfers Improvements)

riak-admin transfers でトランスファーごとの進捗を見られるようになりました。 また長いノード名の表示も改善しています。

進捗が表示されるかどうか、またどのように計算されるかはクラスターのバックエンドに依存します。 進捗は riak_kv_bitcask_backendriak_kv_eleveldb_backendriak_kv_memory_backend で有効です。 riak_kv_multi_backend を使うクラスタは進捗の表示が有効になりません。 riak_kv_bitcask_backendriak_kv_memory_backend ではキーの総数と送信済み数により進捗が決まります。 バリューサイズが大きく変わる場合には進捗が素直に出ないことがあります。 riak_kv_eleveldb_backend では、 進捗は保存されたバイトで測られます。総使用バイトは時に過大評価となるため、表示される進捗は、 実際の進捗を正しく表していることもありますが、最悪の場合には表示よりも先に進んでいる可能性があります。

Lager アップグレード 1.2.2 to 2.0.0 (Lager Upgrade 1.2.2 to 2.0.0)

Lager は Riak 1.3.x 系で用いられていた 1.2.2 から 2.0.0 へアップデートされました。 Lager 自体の新しい機能は https://github.com/basho/lager をご覧ください。

クエリ (Querying)

2i ページネーション (Pagination Support in 2i)

セカンダリーインデックス (2i) を拡張し、ページネーションを可能にしました。 max_results オプションを指定することで、プロトコルバッファーと HTTP の両方で利用できます。完全な詳細は こちら をご覧ください。

クライアント API (Client APIs)

クライアント指定のタイムアウト (Client-specified timeouts)

クライアントタイムアウト値をミリ秒で指定できるようになりました。これはオブジェクトの取得、保存、削除に対するデフォルトの内部的なタイムアウトを上書きします。

プロトコルバッファーでのバケットプロパティー(Protocol Buffers bucket properties)

プロトコルバッファーは既知のすべてのバケットプロパティーをサポートします。またリセットも可能になりました。

バケットリストのストリーミング (List-buckets streaming)

キーリストと同様に、バケットリストもストリーミング可能になりました。 Riak が各ノードからの応答をすべて集めてからクライアントに応答するのではなく、各ノードからの応答に応じてクライアントに送信します。

プロトコルバッファーの複数インターフェースサポート (Protocol buffers binds to multiple interfaces)

HTTP と同様に、プロトコルバッファーも複数のインターフェースにバインド出来るようになりました。設定は pb_portpb_ip から変更され、単一の pb となりました。そこでは IP とポートのリストを指定できます。

データタイプ (Data Types)

PN-カウンター (PN-Counters)

Riak 1.4 では、Riak で初めてとなる分散データ型である PN-カウンターを追加しました。PN-カウンターはインクリメント(P)とデクリメント(N)の両方が可能です。完全な詳細は こちら をご覧ください。私達は Riak の将来のデータ型を説明するため CRDT Cookbook にも取り組んでいます。

Riak Control

Riak Control はクラスタとスタンドアローンノードの管理を改善し、変更のステージングとコミットをサポートします。

新しいコマンド: riak-debug (New command: riak-debug)

コマンド riak-debug はトラブルシューティングのための情報収集自動化の 助けとなるシェルスクリプトです。OS コマンド、Riak コマンド、Riak 設定ファイル、 Riak ログファイルの情報を集めます。スクリプトの使い方やワークフローへの組み込み方は riak-debug -hman riak-debug を参照してください。

パッケージ/ランタイムの変更 (Packaging / Runtime changes)

Riak 1.4 は node_package を 用いてパッケージ化されるようになりました。Riak CS は初めてのリリースから このツールを用いています。 この共通化により、一貫性のある機能を提供し、またパッケージング品質を向上させています。 このリリースに対するパッケージングのバグフィックスは "Issues" セクションの node_package の項目をご覧ください。

追加、削除されたプラットフォーム (Platforms Added / Removed)

Debian Wheezy と SmartOS 13.1 が 1.4 でサポートされます。 予定通り、 32 bit パッケージは削除されました。

パッケージとランタイムの主要な変更点 (Major changes in packages and runtime)
  • Deb と RPM システム向けの init.d スクリプトが、これらのディストリビューションの 標準に合わせて書き換えられました。 特に、 init スクリプトは失敗するとノンゼロの終了コードを返します。 これは他のツールとシームレスに動作するために大きな問題となっていました。
  • start, stop, status コマンドは stdout を読まなくても、戻り値を 返すようになりました。 これは私達がずっと抱えていた主要な "技術的負債" で、ようやく修正されました。
  • riak start/stop コマンドから riak.pid ファイルが作成、削除 されるようになりました。他のツールは、riak スクリプトや nodetool を知らなくても .pid ファイルを活用できます。
  • riak attachriak attach-direct はユーザに q() と CTRL-C の意味について 警告するようになりました。
  • riak スクリプトはどのコマンドが riak ユーザ(または root ユーザ)で 実行されるべきかを明確にしました。 getpidping のステータスコマンドはどのユーザでも実行できますが、 start, stop のようなデーモンコマンドは riak ユーザにより実行されていない 場合にはエラーとなります。

Issues / PR's Resolved

既知の問題 (Known Issues)

leveldb 1.3 から 1.4への変換 (leveldb 1.3 to 1.4 conversion)

leveldb 1.3.x、1.2.xのデータを使ってleveldb 1.4.0を初めて起動すると、データの自動変換が始まります。これは、各ノードの起動を3分から7分停止する可能性があります。”level #1”内のleveldbのデータは”level #1”がソートされたデータレベルの代わりに、重複したデータレベルとしての役割を果たすよう、調整されてゆきます。この変換は”level #1”から”level #2”への通常のコンパクションを通じて、単に”level #1”内のファイル数を8より小さくするものです。これは一度だけ実行されます。

廃止予定 (Deprecation Warnings)

Ubuntu 11.04 (Natty) EOL

Ubuntu 11.04 Natty Narwhal は2012年10月でend-of-lifeになり、apt update、securityの公開リポジトリは削除されています。 これによりRiakは今後11.04に対してビルドされません。私たちは次のRiakのメジャーバージョンリリースのタイミングで、 最新のnon-LTSリリースに対するサポートを検討する予定です。

UbuntuのLTSリリース(10.04、12.04)は引き続きサポートされますので影響はありません。

Jump to Line
Something went wrong with that request. Please try again.