- A new command
riak-cs-debug
includingcluster-info
riak_cs/#769, riak_cs/#832 cluster-info
取得を含む新規コマンドriak-cs-debug
を追加 riak_cs/#769, riak_cs/#832- Tie up all existing commands into a new command
riak-cs-admin
riak_cs/#839 - 既存コマンド群を新規コマンド
riak-cs-admin
へ統合 riak_cs/#839 - Add a command
riak-cs-admin stanchion
to switch Stanchion IP and port manually riak_cs/#657 - Stanchion の IP、ポートを変更する新規コマンド
riak-cs-admin stanchion
を追加 riak_cs/#657 - Performance of garbage collection has been improved via Concurrent GC riak_cs/#830
- 並行 GC によるガベージコレクション性能の向上 riak_cs/#830
- Iterator refresh riak_cs/#805
- Iterator refresh riak_cs/#805
fold_objects_for_list_keys
made default in Riak CS riak_cs/#737, riak_cs/#785fold_objects_for_list_keys
設定をデフォルト有効に変更 riak_cs/#737, riak_cs/#785- Add support for Cache-Control header riak_cs/#821
- Cache-Control ヘッダーのサポートを追加 riak_cs/#821
- Allow objects to be reaped sooner than leeway interval. riak_cs/#470
- 猶予期間(
leeway_seconds
)内でもオブジェクトをガベージコレクション可能にする変更 riak_cs/#470 - PUT Copy on both objects and upload parts riak_cs/#548
- オブジェクト、マルチパートともに PUT Copy API を追加 riak_cs/#548
- Update to lager 2.0.3
- lager 2.0.3 へ更新
- Compiles with R16B0x (Releases still by R15B01)
- R16B0x をビルド環境に追加 (リリースは R15B01 でビルド)
gc_paginated_index
設定をデフォルト有効に変更 riak_cs/#881- Add new API: Delete Multiple Objects riak_cs/#728
- 新規 API: Delete Multiple Objects の追加riak_cs/#728
- Add warning logs for manifests, siblings, bytes and history riak_cs/#915
- マニフェストに対して siblings, バイト、履歴の肥大化を警告するログ追加 riak_cs/#915
- Align
ERL_MAX_PORTS
with Riak default: 64000 riak_cs/#636 ERL_MAX_PORTS
を Riak のデフォルトに合わせ 64000 へ変更 riak_cs/#636- Allow Riak CS admin resources to be used with OpenStack API riak_cs/#666
- Riak CS 管理リソースを OpenStack API でも利用可能にする修正 riak_cs/#666
- Fix path substitution code to fix Solaris source builds riak_cs/#733
- Solaris でのソースビルドのバグ修正のため、パス代入コードの変更 riak_cs/#733
sanity_check(true,false)
logs invalid error onriakc_pb_socket
error riak_cs/#683riakc_pb_socket
エラー時のsanity_check(true,false)
バグを修正 riak_cs/#683- Riak-CS-GC timestamp for scheduler is in the year 0043, not 2013. riak_cs/#713 fixed by riak_cs/#676
- Riak-CS-GC のスケジューラタイムスタンプが 2013 ではなく 0043 になるバグを修正 riak_cs/#713 fixed by riak_cs/#676
- Excessive calls to OTP code_server process #669 fixed by riak_cs/#675
- OTP code_server プロセスを過剰に呼び出すバグを修正 riak_cs/#675
- Return HTTP 400 if content-md5 does not match riak_cs/#596
- content-md5 が一致しない場合に HTTP 400 を返すよう修正 riak_cs/#596
/riak-cs/stats
andadmin_auth_enabled=false
don't work together correctly. riak_cs/#719/riak-cs/stats
がadmin_auth_enabled=false
の時に動作しないバグを修正. riak_cs/#719- Storage calculation doesn't handle tombstones, nor handle undefined manifest.props riak_cs/#849
- ストレージ計算で tombstone および undefined の manifest.props を処理できないバグを修正 riak_cs/#849
- MP initiated objects remains after delete/create buckets #475 fixed by riak_cs/#857 and stanchion/#78
- 未完了のマルチパートオブジェクトが、バケットの削除、作成後にも残るバグを修正 riak_cs/#857 and stanchion/#78
- handling empty query string on list multipart upload riak_cs/#843
- list multipart upload の空クエリパラメータの扱いを修正 riak_cs/#843
- Setting ACLs via headers at PUT Object creation riak_cs/#631
- PUT Object 時にヘッダ指定の ACL が設定されないバグを修正 riak_cs/#631
- Improve handling of poolboy timeouts during ping requests riak_cs/#763
- ping リクエストの poolboy タイムアウト処理を改善 riak_cs/#763
- Remove unnecessary log message on anonymous access riak_cs/#876
- 匿名アクセス時の不要なログを削除 riak_cs/#876
- Fix inconsistent ETag on objects uploaded by multipart riak_cs/#855
- マルチパートでアップロードされたオブジェクトの ETag 不正を修正 riak_cs/#855
- Fix policy version validation in PUT Bucket Policy riak_cs/#911
- PUT Bucket Policy のポリシーバージョン確認の不具合を修正riak_cs/#911
- Fix return code of several commands, to return 0 for success riak_cs/#908
- コマンド成功時に終了コード 0 を返すよう修正 riak_cs/#908
riak_cs/#475 was a security issue where a newly created bucket may include unaborted or incomplete multipart uploads which was created in previous epoch of the bucket with same name. This was fixed by:
riak_cs/#475 はセキュリティ に関する問題で、以前に作られた同名のバケットに 対する未完了のマルチパートアップロードが、新しく作成されたバケットに 含まれてしまう可能性があります。これは次のように修正されました。
-
on creating buckets; checking if live multipart exists and if exists, return 500 failure to client.
-
バケット作成時には、有効なマルチパートが存在するかを確認し、 存在する場合には 500 エラーをクライアントに返します。
-
on deleting buckets; trying to clean up all live multipart remains, and checking if live multipart remains (in stanchion). if exists, return 409 failure to client.
-
バケット削除時には、まず存在する有効なマルチパートの削除を試みた後に、 有効なマルチパートが存在するかを(Stanchion 上で)再度確認します。 存在する場合には 409 エラーをクライアントに返します。
Note that a few operations are needed after upgrading from 1.4.x (or former) to 1.5.0.
1.4.x (またはそれより前のバージョン)から 1.5.0 へのアップグレード後には いくつかの操作が必要です。
-
run
riak_cs_console:cleanup_orphan_multipart/0
orriak_cs_console:cleanup_orphan_multipart/1
in an attached console to cleanup all buckets -
すべてのバケットを正常な状態にするため、アタッチしたコンソールで
riak_cs_console:cleanup_orphan_multipart/0
またはriak_cs_console:cleanup_orphan_multipart/1
を実行します。 -
there might be a time period until above cleanup finished, where no client can create bucket if unfinished multipart upload remains under deleted bucket. You can find [critical] log if such bucket creation is attempted.
-
上記操作が終了するまでの期間は、削除済みのバケットで、未完了のマルチパート アップロードを含むバケットは再作成が出来ない場合があります。 このような再作成の失敗は [critical] ログで確認可能です。
riak_cs/#470 changed the behaviour of object deletion and garbage collection. The timestamps in garbage collection bucket were changed from the future time when the object is to be deleted, to the current time when the object is deleted, Garbage collector was also changed to collect objects until 'now - leeway seconds', from collecting objects until 'now' previously.
riak_cs/#470 は、
オブジェクト削除とガベージコレクションの振る舞いを次のように変更します。
これまで、ガベージコレクションバケットのタイムスタンプはオブジェクトが
回収される将来の時刻でしたが、削除された時刻そのものへと変わります。
同時に、ガベージコレクターは現在の時刻までのタイムスタンプを回収していましたが、
猶予期間(leeway_seconds
)だけ過去のタイムスタンプまでだけを回収するようになります。
以前(- 1.4.x):
t1 t2
-----------+--------------------------+------------------->
DELETE object: GC 実行:
"t1 + leeway" "t2" までの
とマークされる オブジェクトを回収
今後(1.5.0-):
t1 t2
-----------+--------------------------+------------------->
DELETE object: GC 実行:
"t1" "t2 - leeway" までの
とマークされる オブジェクトを回収
This leads that there exists a period where no objects are collected
right after upgrade to 1.5.0, say, t0
, until t0 + leeway
. And
objects deleted just before t0
won't be collected until t0 + 2*leeway
.
これにより、1.5.0 へのアップグレード直後にはオブジェクトが回収されない
期間ができます。つまり t0
から t0 + leeway
までの期間です。
そして t0
直前に削除されたオブジェクトは t0 + 2 * leeway
時点で
回収可能になります。
Also, all CS nodes which run GC should be upgraded first. CS nodes
which do not run GC should be upgraded later, to let leeway second
system work properly. Or stop GC while upgrading whole cluster, by
running riak-cs-gc interval infinity
.
ローリングアップグレードに際しては、GC を実行している CS ノードを
最初に アップグレードする必要があります。
GC を実行しない CS ノードは、猶予期間が正しく動作するために、その後から
アップグレードして下さい。
また、riak-cs-admin gc set-interval infinity
コマンドを実行して
ガベージコレクションを無効にしておくと、ノードの順序を
気にすることなくアップグレードが可能です。
Multi data center cluster should be upgraded more carefully, as to make sure GC is not running while upgrading.
マルチデータセンター構成のクラスタは、より慎重になる必要があります。 ガベージコレクションを確実に無効化してからアップグレードしてください。
- list objects v2 fsm のいくつかのデータが「見えない」バグを修正 riak_cs/788
- HEADリクエスト時にアクセス集計していた問題を修正 riak_cs/791
- POST/PUTリクエスト時のXML中の空白文字の対処 riak_cs/795
- ストレージ使用量計算時の誤ったバケット名を修正 riak_cs/800 Riak CS 1.4.4 で混入したバグにより、そのバージョンを使用している期間の ストレージ計算はバケット名が文字列 "struct" に置き換わった結果となっていました。 本バージョン 1.4.5 でこのバグ自体は修正されましたが、すでに計算済みの古い結果を さかのぼって修正することは不可能です。バケット名が "struct" に置き換わってしまった 計算結果では、個別バケットの使用量を知ることはできませんが、その場合であっても 個々のユーザに関して所有バケットにわたる合計は正しい数字を示します。
- Unicodeのユーザ名とXMLの対応 riak_cs/807
- ストレージ使用量で必要なXMLフィールドを追加 riak_cs/808
- オブジェクトのfoldのタイムアウトを揃えた riak_cs/811
- 削除されたバケットをユーザーのレコードから削除 riak_cs/812
- オブジェクト一覧表示のv2 FSMでプレフィクスを使用する最適化を追加 riak_cs/804
これはバグフィックスのためのリリースです。統計計算の修正が含まれています。
-
basho-patches ディレクトリが作成されなかった問題を修正 riak_cs/775 .
-
sum_bucket
のタイムアウトが全ての容量計算をクラッシュさせていた問題を修正 riak_cs/759 . -
アクセス集計のスロットリング失敗を修正 riak_cs/758 .
-
アクセス集計のクラッシュを修正 riak_cs/747 .
- schedule_delete状態のマニフェストがpending_deleteやactive状態へ復帰するバグを修正。
- 上書きによって既に削除されたマニフェストをカウントしない。
- 誤ったmd5による上書き操作で、既存バージョンのオブジェクトを削除しない。
- マニフェストプルーニングのパフォーマンス改善。
- GCにおける2iのページングオプションを追加。GC対象データ収集時のタイムアウト対策。
- ブロック取得処理における接続断のハンドリングを改善。
- lager 2.0.1へのアップデート。
- 時刻によるマニフェストプルーニングに個数オプションを追加。
- 複数アクセスアーカイブプロセスの並行実行を許可。
- Debian Linux 上の Enterprise 版ビルドの問題を修正。
- ソース tarball ビルドの問題を修正。
- アクセス統計において、正常アクセスがエラーと扱われてしまうバグを修正。
- Riak バージョン 1.4 以前とあわせて動作するよう、バケットリスト map フェーズのログを lager バージョンに依存しないよう変更。
- Riak CS 1.3.0 以前で保存されたマニフェストについて、
props
フィールド のundefined
を正しく扱うよう修正。
- 最初のガベージコレクションの遅延を設定する
initial_gc_delay
オプションを追加。 - ガベージコレクションバケットのキーにランダムなサフィックスを追加し、 ホットキーの回避と削除の性能を向上。
- マニフェストに cluster id が指定されていない場合に用いる
default_proxy_cluster_id
オプションを追加。OSS 版から Enterprise 版への 移行が容易になる。
- 最初の1002個のキーがpending delete状態だったときにlist objectsがクラッシュ する問題を修正
- GCデーモンがクラッシュする問題を解決
- node_packageをアップデートしパッケージ作成の問題を解決
- GCバケットで使われていないキーを削除
- マルチパートアップロードのクエリ文字での認証を修正
- マルチパートでアップロードされたオブジェクトのストレージクラスを修正
- マルチパートアップロードされたオブジェクトのetagsを修正
- Riak CSのマルチバックエンドのインデックス修正をサポート
- GETリクエストの際、通信が遅い場合のメモリ増大を修正
- アクセス統計処理のメモリ使用量を削減
- オブジェクトのACL HEADリクエストの際の500を修正
- マルチパートでアップロードされたオブジェクトの並列アップロードや削除の際の競合の問題を解決
- Content-md5のヘッダがあった場合に整合性をチェックするように修正
- Riakとのコネクションが切れた際のハンドリングを修正
- Swift APIとKeystone認証のサポートを試験的に追加
- Riak 1.4.0以降と併用された場合のオブジェクト一覧取得のパフォーマンスを改善
- ユーザーアカウント名とメールアドレスは変更可能に
- データセンタ間レプリケーションv3のサポートを追加
- Riakとのコネクションタイムアウトを変更可能に
- Lagerのsyslogサポートを追加
- データブロックへのリクエスト時は1つのvnodeへアクセス
- Fix bug in handling of active object manifests in the case of overwrite or delete that could lead to old object versions being resurrected.
- Fix improper capitalization of user metadata header names.
- Fix issue where the S3 rewrite module omits any query parameters that are not S3 subresources. Also correct handling of query parameters so that parameter values are not URL decoded twice. This primarily affects pre-signed URLs because the access key and request signature are included as query parameters.
- Fix for issue with init script stop.
- Fix handling of cases where buckets have siblings. Previously this resulted in 500 errors returned to the client.
- Reduce likelihood of sibling creation when creating a bucket.
- Return a 404 instead of a 403 when accessing a deleted object.
- Unquote URLs to accommodate clients that URL encode
/
characters in URLs. - Deny anonymous service-level requests to avoid unnecessary error messages trying to list the buckets owned by an undefined user.
- Support for multipart file uploads. Parts must be in the range of 5MB-5GB.
- Support for bucket policies using a restricted set of principals and conditions.
- Support for returning bytes ranges of a file using the Range header.
- Administrative commands may be segrated onto a separate interface.
- Authentication for administrative commands may be disabled.
- Performance and stability improvements for listing the contents of buckets.
- Support for the prefix, delimiter, and marker options when listing the contents of a bucket.
- Support for using Webmachine's access logging features in conjunction with the Riak CS internal access logging mechanism.
- Moved all administrative resources under /riak-cs.
- Riak CS now supports packaging for FreeBSD, SmartOS, and Solaris.
- Fix problem where objects with utf-8 unicode key cannot be listed nor fetched.
- Speed up bucket_empty check and fix process leak. This bug was
originally found when a user was having trouble with
s3cmd rb s3://foo --recursive
. The operation first tries to delete the (potentially large) bucket, which triggers our bucket empty check. If the bucket has more than 32k items, we run out of processes unless +P is set higher (because of the leak).
- Full support for MDC replication
- Return 403 instead of 404 when a user attempts to list contents of nonexistent bucket.
- Do not do bucket list for HEAD or ?versioning or ?location request.
- Add reduce phase for listing bucket contents to provide backpressure when executing the MapReduce job.
- Use prereduce during storage calculations.
- Return 403 instead of 404 when a user attempts to list contents of nonexistent bucket.
- Do not expose stack traces to users on 500 errors
- Fix issue with sibling creation on user record updates
- Fix crash in terminate state when fsm state is not fully populated
- Script fixes and updates in response to node_package updates
- Add preliminary support for MDC replication
- Quickcheck test to exercise the erlcloud library against Riak CS
- Basic support for riak_test integration
- Check for timeout when checking out a connection from poolboy.
- PUT object now returns 200 instead of 204.
- Fixes for Dialyzer errors and warnings.
- Return readable error message with 500 errors instead of large webmachine backtraces.
- Update user creation to accept a JSON or XML document for user creation instead of URL encoded text string.
- Configuration option to allow anonymous users to create accounts. In the default mode, only the administrator is allowed to create accounts.
- Ping resource for health checks.
- Support for user-specified metadata headers.
- User accounts may be disabled by the administrator.
- A new key_secret can be issued for a user by the administrator.
- Administrator can now list all system users and optionally filter by enabled or disabled account status.
- Garbage collection for deleted and overwritten objects.
- Separate connection pool for object listings with a default of 5 connections.
- Improved performance for listing all objects in a bucket.
- Statistics collection and querying.
- DTrace probing.
- Support query parameter authentication as specified in [[http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html][Signing and Authenticating REST Requests]].
- Default content-type is not passed into function to handle PUT request body
- Requests hang when a node in the Riak cluster is unavailable
- Correct inappropriate use of riak_moss_utils:get_user by riak_moss_acl_utils:get_owner_data
- Fix PUTs for zero-byte files
- Fix fsm initialization race conditions
- Canonicalize the entire path if there is no host header, but there are tokens
- Fix process and socket leaks in get fsm
- Subsystem for calculating user access and storage usage
- Fixed-size connection pool of Riak connections
- Use a single Riak connection per request to avoid deadlock conditions
- Object ACLs
- Management for multiple versions of a file manifest
- Configurable block size and max content length
- Support specifying non-default ACL at bucket creation time
- Return 403 instead of 503 for invalid anonymous or signed requests.
- Properly clean up processes and connections on object requests.
- HEAD requests always result in a
403 Forbidden
. s3cmd info
on a bucket object results in an error due to missing ACL document.- Incorrect atom specified in
riak_moss_wm_utils:parse_auth_header
. - Bad match condition used in
riak_moss_acl:has_permission/2
.
s3cmd info
fails due to missing'last-modified
key in return document.s3cmd get
of 0 byte file fails.- Bucket creation fails with status code
415
using the AWS Java SDK.
- Bucket-level access control lists
- User records have been modified so that an system-wide unique email address is required to create a user.
- User creation requests are serialized through
stanchion
to be certain the email address is unique. - Bucket creation and deletion requests are serialized through
stanchion
to ensure bucket names are unique in the system. - The
stanchion
serialization service is now required to be installed and running for the system to be fully operational. - The concept of an administrative user has been added to the system. The credentials of the
administrative user must be added to the app.config files for
moss
andstanchion
. - User credentials are now created using a url-safe base64 encoding module.
- Object-level access control lists have not yet been implemented.
- URL decode keys on put so they are represented correctly. This eliminates confusion when objects with spaces in their names are listed and when attempting to access them.
- Properly handle zero-byte files
- Reap all processes during file puts
-
Support for the s3cmd subcommands sync, du, and rb
-
Return valid size and checksum for each object when listing bucket objects.
-
Changes so that a bucket may be deleted if it is empty.
-
Changes so a subdirectory path can be specified when storing or retrieving files.
-
Make buckets private by default
-
Support the prefix query parameter
-
Enhance process dependencies for improved failure handling
- Buckets are marked as /private/ by default, but globally-unique bucket names are not enforced. This means that two users may create the same bucket and this could result in unauthorized access and unintentional overwriting of files. This will be addressed in a future release by ensuring that bucket names are unique across the system.