Что происходит при удалении еще не распространенного объекта в Amazon S3? - PullRequest
1 голос
/ 10 сентября 2011

Рассмотрим неверсионную корзину с единственной возможной последовательностью.

Предположим, я только что загрузил объект, а теперь удаляю его.Запрос на удаление отправляется на сервер, на который объект еще не распространяется.

Теперь, как мне кажется, может произойти всего три вещи:

  1. Сервер запоминает операцию удаления и, таким образом, удаляет объект после его прибытия.на этом сервере.

  2. Сервер отвечает "404 Не найден", и объект продолжает существовать.

  3. Сервер отвечает "201 Нет данных ", забывает об операции удаления, и объект продолжает существовать.

Ответ 1 будет означать, что каждый сервер S3 должен запоминать каждый полученный им запрос на удаление.на тот случай, если позднее он получит соответствующий объект от другого сервера.Единственный способ сбросить эту память - это какая-то глобальная атомарная синхронизация всего кластера S3 (поэтому сервер может быть уверен, что нет ожидающих обновлений для удалений, которые он хочет забыть), что я считаю крайне маловероятным.Однако периодический тайм-аут запомненных удалений нарушил бы окончательную гарантию согласованности, если объект все еще появляется позже.

Ответ 2 , с другой стороны, подразумевает, что если

  1. Я загружаю объект на сервер A
  2. Я загружаю новую версию объекта на сервер B
  3. Я удаляю объект на сервере B
  4. Толькотеперь сервер B слышит от сервера A о загрузке

.., поэтому я получу устаревшую версию объекта, которая нарушает гарантию согласованности.

Ответ 3 также означает, что возможная гарантия согласованности нарушена, поскольку объект будет существовать после выдачи запроса на удаление.

Таким образом, в принципе все три ответа кажутся одинаково маловероятными.Я что-то упустил?

...