Files
swift/test/unit/proxy/test_server.py
Alistair Coles cc3fa3cc0f Fix 503s from EC GETs of objects with POST metadata
When an ECGetResponseBucket is used to collect 'good' backend
responses, its timestamp is used to construct fragment preferences
that govern the choice of fragments that a backend might return with
subsequent reponses. The bucket timestamp should remain fixed and
equal to the X-Backend-Data-Timestamp of the responses that it is
collecting when the responses are successful.

Previously the bucket timestamp was updated by each response's
X-Backend-Timestamp, which could be newer than the
X-Backend-Data-Timestamp if the object had newer metadata from a
POST. This caused the fragment preferences mechanism to fail,
potentially resulting in no bucket of durable fragments being
assembled even when sufficient durable fragments existed on backend
servers. In this case teh proxy would return a 503 response to the
client.

The bucket timestamp should be updated by X-Backend-Timestamp when
collecting bad responses, but not when collecting good responses.

Change-Id: I6236f20d736c119947e50540b16d212dba1ec20c
Closes-Bug: #1912014
2021-01-19 11:33:37 +00:00

497 KiB