)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"92fbc41fb962da00f0b0be0fc06ad5d435b84060","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e731c948_7f292d89","updated":"2026-01-08 18:26:12.000000000","message":"recheck\nrandom failures.","commit_id":"e547071e026d4763584b22dd06bed9142d83ccef"}],"swift/common/middleware/versioned_writes/object_versioning.py":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"c864a82ac6b149f5750cfb21410f8715279437d9","unresolved":true,"context_lines":[{"line_number":1126,"context_line":"                    raise HTTPBadRequest(\u0027invalid version_marker param\u0027)"},{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":"                params[\u0027marker\u0027] \u003d self._build_versions_object_name("},{"line_number":1129,"context_line":"                    params[\u0027marker\u0027], ts)"},{"line_number":1130,"context_line":"        elif \u0027marker\u0027 in params:"},{"line_number":1131,"context_line":"            params[\u0027marker\u0027] \u003d self._build_versions_object_prefix("},{"line_number":1132,"context_line":"                params[\u0027marker\u0027]) + \u0027:\u0027  # just past all numbers"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa625a2_74923c54","line":1129,"updated":"2026-01-08 20:19:47.000000000","message":"need to replace ``ts`` with ``ts.internal``, since ``_build_versions_object_name`` only accepts string timestamps now by definition.\n\nI don\u0027t expect any test case to fail after the change, let\u0027s see if this fix passes zuul: https://review.opendev.org/c/openstack/swift/+/972785","commit_id":"e547071e026d4763584b22dd06bed9142d83ccef"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e1b3d17d881565a883e2bd4c49a498665bbcb7fc","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"                    raise HTTPBadRequest(\u0027invalid version_marker param\u0027)"},{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":"                params[\u0027marker\u0027] \u003d self._build_versions_object_name("},{"line_number":1129,"context_line":"                    params[\u0027marker\u0027], ts)"},{"line_number":1130,"context_line":"        elif \u0027marker\u0027 in params:"},{"line_number":1131,"context_line":"            params[\u0027marker\u0027] \u003d self._build_versions_object_prefix("},{"line_number":1132,"context_line":"                params[\u0027marker\u0027]) + \u0027:\u0027  # just past all numbers"}],"source_content_type":"text/x-python","patch_set":5,"id":"4d4f5055_48d9569c","line":1129,"in_reply_to":"1aa625a2_74923c54","updated":"2026-01-09 11:36:33.000000000","message":"Done","commit_id":"e547071e026d4763584b22dd06bed9142d83ccef"}],"swift/common/swob.py":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6ef7d773fd63c2a8f4a28ea8bf9852137101c7d3","unresolved":true,"context_lines":[{"line_number":171,"context_line":"    :param value: a string in the IMF-fixdate format."},{"line_number":172,"context_line":"    :returns: a Timestamp instance."},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":"    seconds \u003d calendar.timegm(time.strptime(value, DATE_HEADER_FORMAT_STRING))"},{"line_number":175,"context_line":"    return Timestamp(seconds)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5672c27c_f0a92544","line":174,"updated":"2026-01-08 01:15:19.000000000","message":"both of two original places use integer ``seconds``, since later ``Timestamp(seconds)`` will be called within ``_build_versions_object_name``. So this refactoring introduces a new call of ``Timestamp(seconds)`` which is not necessary, how about just have ``parse_date_header`` to return integer?","commit_id":"b1ceaf2213ed9be42708986b71df929ed9627278"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0046092d73ee8aee08db98e9a50cd0c2841732fd","unresolved":true,"context_lines":[{"line_number":171,"context_line":"    :param value: a string in the IMF-fixdate format."},{"line_number":172,"context_line":"    :returns: a Timestamp instance."},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":"    seconds \u003d calendar.timegm(time.strptime(value, DATE_HEADER_FORMAT_STRING))"},{"line_number":175,"context_line":"    return Timestamp(seconds)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"72b1b382_9bae3395","line":174,"in_reply_to":"5672c27c_f0a92544","updated":"2026-01-08 14:45:42.000000000","message":"ok, that\u0027s a fair point, returning the simpler primitive int here is probably more intuitive.\n\nThe problem I am trying to prevent is that, depending on which way we decide to go with with_jitter\u003dTrue|False, passing an int to Timestamp() may not be the right thing to do (because we do NOT want jitter added to a version derived from a last-modified-time header).\n\nSo in this first patchset, this would have been the only place where we needed to add ``with_jitter\u003dFalse``, if necessary.\n\nI\u0027ll change it so that parse_date_header returns an int and then the versioning middlewares cast it to a string (to match the type of \u0027version\u0027 that would be got from any of the other sources i.e. x-timestamp header, request param). That will make calls to _build_object_version_name uniform AND prevent Timestamp() ever adding jitter regardless of the with_jitter default.","commit_id":"b1ceaf2213ed9be42708986b71df929ed9627278"}]}
