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
497 KiB
497 KiB