1

コンテナーとオブジェクトをファイル システムから直接削除した後でも、Swift で GET コマンドを実行すると、コンテナーが一覧表示されます。ただし、DELETE コマンドでコンテナーを削除しようとすると、404: Not Found エラー メッセージが返されます。何か問題があるのか​​、それとも何らかのキャッシュがあるのか​​説明してください。

4

1 に答える 1

1

問題は、コンテナやオブジェクトをファイル システムから直接削除したことによるものだと思います。

オブジェクトとコンテナーの書き込み要求を処理するための Swift のメソッドは、すべての分散インデックス情報が最終的に一貫性を保つように非常に注意する必要があります。ファイルシステムを直接変更するだけでは十分ではありません。アカウント データベースの一覧を更新する前に、コンテナー データベースが削除されたようです。おそらく、すべてのオブジェクト インデックス情報が削除される前に、手動でリンクを解除したのでしょうか?

通常、削除リクエストの後、アカウント データベースが正しく更新されるように、コンテナは「墓石」としてしばらくハングアップする必要があります。

回避策として、(POST を使用して) それらを再作成してから、DELETE を再発行することができます。これにより、新しい空のコンテナーの削除が正常に許可され、アカウント データベースの一覧が直接更新されます。

(注: コンテナー データベース自体は空ですが、reclaim_age が経過するまで、廃棄 (tombstone) としてディスク上に存在し続けます)

于 2013-06-10T17:33:28.443 に答える