Rackspaceでクラウド ファイルを更新するときに、オプティミスティック コンカレンシーをどのように実践しますか。
Azure BLOB ストレージでは、次のことを行います。
- ブロブを取得する
- その etag を書き留めます
- ブロブを変更する
- If-None-Match ヘッダーに etag を指定して、変更された BLOB をアップロードします。
これは、GET とアップロードの間に他の誰かが変更された BLOB をアップロードした場合、etag が一致しないためアップロードが失敗することを意味します (その後、再度 GET してから変更して再度アップロードします)。
とにかく、Cloud Files でそれを行う機能が見つかりません。変更する予定の BLOB の etag を取得できますが、期待どおりに If-None-Match ヘッダーを付けて返送できません。etag ヘッダーを送信することはできますが、これには、既に送信されているデータではなく、送信しているデータの MD5 チェックサムが必要です。
私が見る限り、送信する Last Modified リクエスト ヘッダーもありません。
Cloud Files への同時作業中に変更が失われないようにするにはどうすればよいですか?