)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9d94bbbf28e69f0c7f2749f8d2171140b03ab8e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8a2fb106_37923922","updated":"2023-02-17 10:13:46.000000000","message":"Does a meta file ever get created with an offset in its timestamp? IIUC the offset is only used where data is PUT via a server API (reconciler and object-versioning).","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"36177b934c737e5c986416551ed360a159376c46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8a3b392b_9bb9c4ca","updated":"2023-02-22 15:27:06.000000000","message":"I wonder if we might not be more graceful with upgrades and return a version headers in the SSYNC response: https://github.com/openstack/swift/blob/52254bb5ca008c2662c42120417ab3490c4339ff/swift/obj/server.py#L1312-L1320","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9e2cd59356b5000ba3f1bf2dd21b5ef0254e3319","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dbeb2444_54b9b592","in_reply_to":"8a2fb106_37923922","updated":"2023-02-17 16:38:19.000000000","message":"My concern is that we\u0027ll find some reason to want to use it later -- and it\u0027d be better for us to be able to deal with it once that happens than blow up and have another fire drill because reconstruction can\u0027t make progress.","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9cbfb37914fcccad11ecb422e225261d710269fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dcfc9899_646c5911","in_reply_to":"8a3b392b_9bb9c4ca","updated":"2023-02-23 20:09:44.000000000","message":"I\u0027m not entirely sure that this is comparable to the no-commit problem:\n\n- To the best of our knowledge, no such .metas-with-offsets exist today in any cluster, anywhere, unlike non-durable data which could not be reverted from handoffs.\n- For the other patch, we previously would not offer non-durables at all via the control-protocol, because we had no way to represent them via the data-protocol. For this patch, we would already be willing to offer .metas-with-offsets via the control-protocol -- but we\u0027d offer them with the wrong timestamp. On the plus side, though, we\u0027re (or at least, I\u0027m) fairly certain that the .meta-with-offset will transmit just fine via the data-protocol.\n\nThat said -- what *should* the sender do when it has a meta with an offset but the receiver (apparently) can\u0027t decode missing lines where metas have offsets? I see (at least) four different options:\n\n- Skip sending anything about this whole hash\n- Skip sending anything about the .meta, only mention the .data\n- Lie a little and back-date the .meta, zeroing out the offset (essentially preserving existing behavior)\n- Blow up the protocol\n\nWhatever we decide, I definitely think we *shouldn\u0027t* (continue to) let the sender to go deleting data if it\u0027s a handoff... and the last one seemed like a pretty fool-proof way to ensure we don\u0027t do that until the upgrade completes. The third one is maybe tempting, though -- we\u0027re not doing any worse than before at least...","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9cbfb37914fcccad11ecb422e225261d710269fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fdbd0ccf_4eda8694","in_reply_to":"dbeb2444_54b9b592","updated":"2023-02-23 20:09:44.000000000","message":"Oh, I think I\u0027ve got a use-case, and it doesn\u0027t even involve wanting to strip out `X-Delete-At` but preserve everything else!\n\nRotating root-secrets on the backend, without re-uploading data.","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"43dfe136a4df72a4b62b1b13a32f024868f53b7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ae8932cc_b2a97794","updated":"2023-02-22 15:41:48.000000000","message":"rebased and added some more tests","commit_id":"8fb7f35d5e126f3ecccf478a82017a1cebcb55e1"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"8eec06c47a01e0b2ad0c17904da2343f1941f5ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e17ede00_22b5f37c","updated":"2023-02-24 10:33:28.000000000","message":"@Tim I was musing about a version handshake for upgrade more because it would let us avoid the slightly weird \u0027__\u0027 than avoid blowing up mid-session: as you point out, we do not anticipate that happening.\n\nSince we\u0027ve done the work, let\u0027s fix this bug before it happens.","commit_id":"5f7e0df126715d82a33fb025e656098fa7234b56"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"549edb8497fb3e2d1cd6b7763833e57fb2c1dd38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"af9a9d21_8f890268","updated":"2023-03-14 19:19:51.000000000","message":"recheck\n\nFlakey probe test","commit_id":"5f7e0df126715d82a33fb025e656098fa7234b56"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3d4937167c331b2b3b24524618192d71a32c980c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"27c7e55b_e691ec59","updated":"2023-04-17 16:24:37.000000000","message":"recheck","commit_id":"4e74e7f558c44068a45556be02c184a753476c56"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d234fd24768956bb8d88fb4864c7b521c39d00da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ba35cb1a_28b19549","updated":"2023-04-17 21:33:21.000000000","message":"recheck\n\nCan\u0027t for the life of me reproduce the issue, nor find any logs that seem relevant :-/","commit_id":"4e74e7f558c44068a45556be02c184a753476c56"}],"swift/obj/ssync_receiver.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"36177b934c737e5c986416551ed360a159376c46","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        for item in [subpart for subpart in subparts if \u0027:\u0027 in subpart]:"},{"line_number":55,"context_line":"            k, v \u003d item.split(\u0027:\u0027)"},{"line_number":56,"context_line":"            if k \u003d\u003d \u0027m\u0027:"},{"line_number":57,"context_line":"                v, _, o \u003d v.partition(\u0027__\u0027)"},{"line_number":58,"context_line":"                # ignore ts_data offset when calculating ts_meta"},{"line_number":59,"context_line":"                result[\u0027ts_meta\u0027] \u003d Timestamp(Timestamp(t_data).normal,"},{"line_number":60,"context_line":"                                              delta\u003dint(v, 16),"}],"source_content_type":"text/x-python","patch_set":1,"id":"190dac3a_0a54f342","line":57,"range":{"start_line":57,"start_character":38,"end_line":57,"end_character":42},"updated":"2023-02-22 15:27:06.000000000","message":"TIL https://peps.python.org/pep-0515/","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9cbfb37914fcccad11ecb422e225261d710269fe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        for item in [subpart for subpart in subparts if \u0027:\u0027 in subpart]:"},{"line_number":55,"context_line":"            k, v \u003d item.split(\u0027:\u0027)"},{"line_number":56,"context_line":"            if k \u003d\u003d \u0027m\u0027:"},{"line_number":57,"context_line":"                v, _, o \u003d v.partition(\u0027__\u0027)"},{"line_number":58,"context_line":"                # ignore ts_data offset when calculating ts_meta"},{"line_number":59,"context_line":"                result[\u0027ts_meta\u0027] \u003d Timestamp(Timestamp(t_data).normal,"},{"line_number":60,"context_line":"                                              delta\u003dint(v, 16),"}],"source_content_type":"text/x-python","patch_set":1,"id":"e8454b53_4ff50764","line":57,"range":{"start_line":57,"start_character":38,"end_line":57,"end_character":42},"in_reply_to":"190dac3a_0a54f342","updated":"2023-02-23 20:09:44.000000000","message":"Yeah, it\u0027s... a little unfortunate for us. On the plus side, all versions of Swift that support py3 know about Timestamp offsets -- those predate our py3 support by a long ways!","commit_id":"822a0a0bf88fef9939c3232d1dd9b356f0c65a66"}]}
