Comment 1 for bug 1786730

Revision history for this message
Tim Burke (1-tim-z) wrote :

I wonder if this might be sufficiently covered by recommending that the delay_reaping setting be sufficiently large that container replication will have settled... though the advent of deep containers makes that even harder to reason about.

Looks like once the reaper thinks the container is empty, it issues a DELETE to all replicas of the container. Presumably, any replica that isn't actually empty will 409... but there should be fewer objects in the container, which will eventually translate into fewer rows, which should mean that it will get easier to replicate to the one replica that's been driving the work (and presumably accepted the DELETE) ...

This definitely highlights the need to have a large account reclaim_age -- we probably ought to expand on our comment about

> The sum of [delay_reaping] and the container-updater
> interval should be less than the account-replicator
> reclaim_age.

in etc/account-server.conf-sample; there are all sorts of other factors to consider like

- container replication cycle time,
- container sharder cycle time,
- object updater cycle time,
- whether your updaters/replicators/sharders are actually keeping up...

Ultimately, I think it all comes back to John's great lament: implementing DELETE was the worst idea Swift ever had :P