swift/swift/obj
Alistair Coles 94cc5ec6d6 Only redirect updates originating from the updater
To avoid opening a container database to handle every object update,
the container server now only looks for a shard range to which an
update might be redirected when the update originates from the object
updater. This is inferred from the presence of an
'X-Backend-Accept-Redirect' header.

Futhermore, the object updater only includes this header for updates
that do not already have a redirection location cached in the async
pending file/update data.

Consequently:
- updates from old updater daemons will not be redirected.
- updates in the client PUT/DELETE path will not be redirected *again*
  (they will normally have had their update target 'redirected' by the
  proxy en route to the object server).
- updates to a shard container will not be redirected because they will
  already have an update location from the root container.

When a container first moves to sharded state, there will be a short
period of time during which the proxy has not learnt that the
container is sharding and will not re-target the object update. These
updates will now land in the root misplaced objects table. Some
changes to probe tests are needed to account for this altered
behaviour.

Change-Id: I3b0f500ca7082a3c96ed2fb72f13073a9c840773
2018-04-09 22:11:57 +01:00
..
__init__.py Initial commit of Swift code 2010-07-12 17:03:45 -05:00
auditor.py Change object_audit_location_generator() to yield for a single policy. 2018-03-22 03:02:35 +00:00
diskfile.py Change object_audit_location_generator() to yield for a single policy. 2018-03-22 03:02:35 +00:00
expirer.py Fix object-server to not 400 all expirer DELETEs 2018-03-02 15:25:38 +00:00
mem_diskfile.py Add metadata checksums to old objects in auditor. 2017-11-13 10:22:57 -08:00
mem_server.py Per-policy DiskFile classes 2015-04-14 00:52:16 -07:00
reconstructor.py Use "poll" or "selects" Eventlet hub for all Swift daemons. 2017-10-12 10:45:12 -07:00
replicator.py Remove object replicator's lockup detector/mitigator. 2018-03-22 17:18:23 -07:00
server.py Merge remote-tracking branch 'gerrit/master' into feature/deep 2018-03-06 19:37:47 +00:00
ssync_receiver.py Merge "Fix SSYNC failing to replicate unexpired object" 2017-05-31 22:49:55 +00:00
ssync_sender.py Allow to rebuild a fragment of an expired object 2017-08-04 23:05:08 +02:00
updater.py Only redirect updates originating from the updater 2018-04-09 22:11:57 +01:00