Another similar, but a bit different, case I just hit.
# ls -1 1454619054.02968.data 1454619056.04876.meta
.data file contains X-Delete-At: 1454619654 .meta does not contain X-Delete-At info.
So, object is valid because the last timestamp meta does not contains expiration.
But SSYNC fails to replicate it, because the ssync_receiver return a 400 Bad Request, body="X-Delete-At in past"
It turns out SSYNC sender try to PUT the datafile with its meta, then POST the meta file with its meta. So, the datafile trigger the 400 error.
Even if the object server were accepting the datafile, it would probably refuse the following POST because the object would be expired.
Another similar, but a bit different, case I just hit.
# ls -1 02968.data 04876.meta
1454619054.
1454619056.
.data file contains X-Delete-At: 1454619654
.meta does not contain X-Delete-At info.
So, object is valid because the last timestamp meta does not contains expiration.
But SSYNC fails to replicate it, because the ssync_receiver return a 400 Bad Request, body="X-Delete-At in past"
It turns out SSYNC sender try to PUT the datafile with its meta, then POST the meta file with its meta. So, the datafile trigger the 400 error.
Even if the object server were accepting the datafile, it would probably refuse the following POST because the object would be expired.