I observed an object HEAD and GET responses coming back with different headers after an overwrite of the object stored in an 8+4 EC policy.
Example:
HEAD response:
{'content-length': '432739508', 'x-backend-timestamp': '1599155354.09456', 'x-object-sysmeta-ec-frag-index': '9', 'accept-ranges': 'bytes', 'x-object-sysmeta-ec-content-length': '432739508', 'x-object-sysmeta-ec-etag': '22d034df52db5a08886dd60b756f957d', 'x-backend-fragments': '{"1599155354.09456": [9]}', 'last-modified': 'Thu, 03 Sep 2020 17:49:15 GMT', 'etag': '39ce43328bcdb8a7fd44216351c4f2ed', 'x-timestamp': '1599155354.09456', 'x-trans-id': 'tx08b8938bc268419da85cf-005f6d0da9', 'x-backend-data-timestamp': '1599155354.09456', 'x-backend-durable-timestamp': '1599155354.09456', 'x-object-sysmeta-ec-scheme': 'isa_l_rs_cauchy 8+4', 'x-object-sysmeta-container-update-override-etag': '39ce43328bcdb8a7fd44216351c4f2ed', 'content-type': 'binary/octet-stream', 'x-openstack-request-id': 'tx08b8938bc268419da85cf-005f6d0da9', 'x-object-sysmeta-ec-segment-size': '1048576'}
GET response headers:
{'Content-Length': '432739508', 'X-Backend-Timestamp': '1599623050.52817', 'X-Object-Sysmeta-Ec-Frag-Index': '8', 'Accept-Ranges': 'bytes', 'X-Object-Sysmeta-Ec-Content-Length': '432739508', 'X-Object-Sysmeta-Ec-Etag': 'c82fe51da13a096014ca21e15f2fdb42', 'X-Backend-Data-Timestamp': '1599623050.52817', 'X-Backend-Fragments': '{"1599623050.52817": [8]}', 'Last-Modified': 'Wed, 09 Sep 2020 03:44:11 GMT', 'Etag': '39ce43328bcdb8a7fd44216351c4f2ed', 'X-Timestamp': '1599623050.52817', 'X-Trans-Id': 'tx4e77c5b9e01e40b4a3018-005f6d0da9', 'X-Backend-Durable-Timestamp': '1599623050.52817', 'X-Object-Sysmeta-Ec-Scheme': 'isa_l_rs_cauchy 8+4', 'X-Object-Sysmeta-Container-Update-Override-Etag': '39ce43328bcdb8a7fd44216351c4f2ed', 'Content-Type': 'binary/octet-stream', 'X-Openstack-Request-Id': 'tx4e77c5b9e01e40b4a3018-005f6d0da9', 'X-Object-Sysmeta-Ec-Segment-Size': '1048576'}
I don't understand the EC behavior very well, but it appears that the HEAD response returned information from a now-stale fragment, while the GET response returned current information.