)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"17a11604941ef962aeba406351358c20f9aa5012","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make OldestAsyncPendingTracker timestamp float"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the OldestAsyncPendingTracker timestamp is a string, it should be a float."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Iba43783e880e0860357ba8b9f0a11f28abf87555"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f8f3d28_bc0d83c3","line":9,"updated":"2024-12-05 19:40:54.000000000","message":"maybe worth to add a prefix of ``UpgradeImpact: `` like this below, since SRE will need make some changes on their side.\n\n```\nUpgradeImpact: During rolling upgrades you should expect expirer queue entries to continue lacking swift_expirer_bytes\u003d annotations until ALL object servers replicas have been upgraded to new code.\n```","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"1a151bde0d79e7d633463ff06acd53769cd1cc70","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make OldestAsyncPendingTracker timestamp float"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the OldestAsyncPendingTracker timestamp is a string, it should be a float."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Iba43783e880e0860357ba8b9f0a11f28abf87555"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"a26027f6_4b1d7e72","line":9,"in_reply_to":"72c8a7b4_388e27e6","updated":"2024-12-09 18:30:49.000000000","message":"Added the UpgradeImpact prefix. If you would like to modify the commit message further please feel free to do so or let me know which changes you would like to see.","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"fcbdadc5b955670939801b31123ff7284041b090","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make OldestAsyncPendingTracker timestamp float"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the OldestAsyncPendingTracker timestamp is a string, it should be a float."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Iba43783e880e0860357ba8b9f0a11f28abf87555"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"72c8a7b4_388e27e6","line":9,"in_reply_to":"9f8f3d28_bc0d83c3","updated":"2024-12-06 13:19:29.000000000","message":"This comment\n\"continue lacking swift_expirer_bytes\u003d annotations\"\n\nimplies there is a bug that is being fixed. I hadn\u0027t picked up on that, and thought this was mostly a cosmetic change. Sounds like there may need to be some more explanation in the commit message as to why this change is needed.","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"750146b0f8e5221d060c61e071e9503597ec1857","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make OldestAsyncPendingTracker timestamp float"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make OldestAsyncPendingTracker timestamp a float"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Previously, the OldestAsyncPendingTracker timestamp was stored as a string. This change updates it to be stored as a float."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7ef046a2_1cf0a09c","line":9,"updated":"2024-12-09 17:56:56.000000000","message":"repeated line","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"1a151bde0d79e7d633463ff06acd53769cd1cc70","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make OldestAsyncPendingTracker timestamp float"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make OldestAsyncPendingTracker timestamp a float"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Previously, the OldestAsyncPendingTracker timestamp was stored as a string. This change updates it to be stored as a float."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"59cd3213_0367b738","line":9,"in_reply_to":"7ef046a2_1cf0a09c","updated":"2024-12-09 18:30:49.000000000","message":"Removed.","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"750146b0f8e5221d060c61e071e9503597ec1857","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Previously, the OldestAsyncPendingTracker timestamp was stored as a string. This change updates it to be stored as a float."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"UpgradeImpact: This will require an additional change to the metrics exporter in order to process the timestamp as a float."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Iba43783e880e0860357ba8b9f0a11f28abf87555"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3e79cf63_991317d4","line":13,"range":{"start_line":13,"start_character":57,"end_line":13,"end_character":78},"updated":"2024-12-09 17:56:56.000000000","message":"\"the metrics exporter\" is specific to proprietary deployment - a more general/abstract term might be \"recon parsers\"","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"1a151bde0d79e7d633463ff06acd53769cd1cc70","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Previously, the OldestAsyncPendingTracker timestamp was stored as a string. This change updates it to be stored as a float."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"UpgradeImpact: This will require an additional change to the metrics exporter in order to process the timestamp as a float."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Iba43783e880e0860357ba8b9f0a11f28abf87555"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"28a54071_dba5d142","line":13,"range":{"start_line":13,"start_character":57,"end_line":13,"end_character":78},"in_reply_to":"3e79cf63_991317d4","updated":"2024-12-09 18:30:49.000000000","message":"Updated","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c63a800af042a9b8516ecdbaea04ab4a695fe1ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bebe7692_c89d037b","updated":"2024-12-03 17:43:57.000000000","message":"AFAICT the only place this matters is in the recon dump, because elsewhere the timestamp is cast to float on the way out of tracker class.\n\nIt\u0027s a shame that there is no unit test that verifies the recon dump :/\n\nThis works, but I\u0027d encourage doing the cast in the add_update method, cleaning out some of the other casting to float, and therefore getting more clarity about the type of timestamp throughout that class.","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6cec0a24115421281bd1e7e3e123d0e6b0844040","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5a3227b4_76982a21","updated":"2024-11-20 20:56:18.000000000","message":"LGTM. oldest_async_pendings.add_update needs float type of \u0027timestamp\u0027, and test cases within TestOldestAsyncPendingTracker uses float as well.","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9506189cf9d5d7abd0e7e3a49e0eefb6cc40348a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bc5ac440_f6f30778","updated":"2024-11-27 20:33:30.000000000","message":"recheck\n\nwe fixed the cors func test","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"17a11604941ef962aeba406351358c20f9aa5012","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"892ebc17_9608a8ab","updated":"2024-12-05 19:40:54.000000000","message":"recheck\n\nunrelated gate failure: Errors during downloading metadata for repository \u0027centos-nfv-openvswitch\u0027: Downloading successful, but checksum doesn\u0027t match.","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"787c366267bb2d2667bb63d22a0fa6057f036ffb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d43d3c7a_655ff24a","updated":"2024-12-06 13:20:13.000000000","message":"BTW I fixed the docstring since this needed a recheck in CI anyway","commit_id":"e2fe24bf9386543630aff737a0fac3e7b720c863"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"fcbdadc5b955670939801b31123ff7284041b090","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0ab764aa_91ee7941","updated":"2024-12-06 13:19:29.000000000","message":"Code LGTM but sounds like the commit message may need some more about \"why\".\n\nI worked up a unit test to cover recon dumps https://review.opendev.org/c/openstack/swift/+/937252 - @cchigbo@nvidia.com if that looks good to you we could squash it into this patch.","commit_id":"e2fe24bf9386543630aff737a0fac3e7b720c863"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"750146b0f8e5221d060c61e071e9503597ec1857","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"954cdd2b_7d7ea266","updated":"2024-12-09 17:56:56.000000000","message":"updater.py went backwards ;-)","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"}],"swift/obj/updater.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c63a800af042a9b8516ecdbaea04ab4a695fe1ae","unresolved":true,"context_lines":[{"line_number":232,"context_line":"        self.sorted_entries \u003d []"},{"line_number":233,"context_line":"        self.ac_to_timestamp \u003d {}"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def add_update(self, account, container, timestamp):"},{"line_number":236,"context_line":"        ac \u003d (account, container)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if ac in self.ac_to_timestamp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"711937d0_3a693039","line":235,"range":{"start_line":235,"start_character":45,"end_line":235,"end_character":54},"updated":"2024-12-03 17:43:57.000000000","message":"an alternative approach would be to cast timestamp to a float here. That is more defensive, and also means you can reason about the rest of this class knowing that, whatever is passed in, the internal structure have float timestamps. Then it ought to be possible to remove some of the casts to float as data is returned from the class in the getters?","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c63a800af042a9b8516ecdbaea04ab4a695fe1ae","unresolved":true,"context_lines":[{"line_number":232,"context_line":"        self.sorted_entries \u003d []"},{"line_number":233,"context_line":"        self.ac_to_timestamp \u003d {}"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def add_update(self, account, container, timestamp):"},{"line_number":236,"context_line":"        ac \u003d (account, container)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if ac in self.ac_to_timestamp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a30d6a59_ec2bb8df","line":235,"updated":"2024-12-03 17:43:57.000000000","message":"would be worth adding a doctsring that can then include the expected type of timestamp\n\n(in other modules ``timestamp`` is often a utils.Timestamp instance)","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"c3d102b088fc8a988a6764648f7fe9b53a2a24f8","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        self.sorted_entries \u003d []"},{"line_number":233,"context_line":"        self.ac_to_timestamp \u003d {}"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def add_update(self, account, container, timestamp):"},{"line_number":236,"context_line":"        ac \u003d (account, container)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if ac in self.ac_to_timestamp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"340b9fb7_ed06b40f","line":235,"range":{"start_line":235,"start_character":45,"end_line":235,"end_character":54},"in_reply_to":"711937d0_3a693039","updated":"2024-12-05 17:12:37.000000000","message":"Done.","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"c3d102b088fc8a988a6764648f7fe9b53a2a24f8","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        self.sorted_entries \u003d []"},{"line_number":233,"context_line":"        self.ac_to_timestamp \u003d {}"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def add_update(self, account, container, timestamp):"},{"line_number":236,"context_line":"        ac \u003d (account, container)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if ac in self.ac_to_timestamp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"76ee9c8f_f8132904","line":235,"in_reply_to":"a30d6a59_ec2bb8df","updated":"2024-12-05 17:12:37.000000000","message":"Added a docstring.","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c63a800af042a9b8516ecdbaea04ab4a695fe1ae","unresolved":true,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def get_oldest_timestamp(self):"},{"line_number":275,"context_line":"        if self.sorted_entries:"},{"line_number":276,"context_line":"            return float(self.sorted_entries[0][0])"},{"line_number":277,"context_line":"        return None"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def get_oldest_timestamp_age(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a2beaa09_ab86d152","line":276,"updated":"2024-12-03 17:43:57.000000000","message":"for example, here the timestamp is cast to a float, but this shouldn\u0027t be necessary if typing is enforced in add_update","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"c3d102b088fc8a988a6764648f7fe9b53a2a24f8","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def get_oldest_timestamp(self):"},{"line_number":275,"context_line":"        if self.sorted_entries:"},{"line_number":276,"context_line":"            return float(self.sorted_entries[0][0])"},{"line_number":277,"context_line":"        return None"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def get_oldest_timestamp_age(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"98a2a8d2_caf5d6ba","line":276,"in_reply_to":"a2beaa09_ab86d152","updated":"2024-12-05 17:12:37.000000000","message":"Removed.","commit_id":"aaadcb7c48eb21655b7aced48981dd4ee40c7b25"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"397c44feabce833b4dc25f6644bdf22bf093d800","unresolved":true,"context_lines":[{"line_number":239,"context_line":"        Args:"},{"line_number":240,"context_line":"            account (str): The account name."},{"line_number":241,"context_line":"            container (str): The container name."},{"line_number":242,"context_line":"            timestamp (float): The timestamp to add or update."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # Ensure the timestamp is a float"},{"line_number":245,"context_line":"        timestamp \u003d float(timestamp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"cf08a7f4_828f5d05","line":242,"updated":"2024-12-06 13:13:53.000000000","message":"we use sphinx style docstrings https://sphinx-rtd-tutorial.readthedocs.io/en/latest/docstrings.html","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"1a151bde0d79e7d633463ff06acd53769cd1cc70","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        Args:"},{"line_number":240,"context_line":"            account (str): The account name."},{"line_number":241,"context_line":"            container (str): The container name."},{"line_number":242,"context_line":"            timestamp (float): The timestamp to add or update."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # Ensure the timestamp is a float"},{"line_number":245,"context_line":"        timestamp \u003d float(timestamp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"365b94dc_22c1beae","line":242,"in_reply_to":"7c1d9b8c_bb9e41f8","updated":"2024-12-09 18:30:49.000000000","message":"Thank you!","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"787c366267bb2d2667bb63d22a0fa6057f036ffb","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        Args:"},{"line_number":240,"context_line":"            account (str): The account name."},{"line_number":241,"context_line":"            container (str): The container name."},{"line_number":242,"context_line":"            timestamp (float): The timestamp to add or update."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # Ensure the timestamp is a float"},{"line_number":245,"context_line":"        timestamp \u003d float(timestamp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7c1d9b8c_bb9e41f8","line":242,"in_reply_to":"cf08a7f4_828f5d05","updated":"2024-12-06 13:20:13.000000000","message":"Done","commit_id":"257f456e4c5f72ecbbe0d8e6463a63e9c57f262e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"750146b0f8e5221d060c61e071e9503597ec1857","unresolved":true,"context_lines":[{"line_number":239,"context_line":"        Args:"},{"line_number":240,"context_line":"            account (str): The account name."},{"line_number":241,"context_line":"            container (str): The container name."},{"line_number":242,"context_line":"            timestamp (float): The timestamp to add or update."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # Ensure the timestamp is a float"},{"line_number":245,"context_line":"        timestamp \u003d float(timestamp)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ddcf887_2e085693","line":242,"updated":"2024-12-09 17:56:56.000000000","message":"this has reverted, I guess because you updated your local branch rather then the branch I pushed to fix the docstring\n\nYou can to get my version using\n```\n% git review -d 935822,4\n```\n\nnote the trailing ``,4`` meaning \"get patchset 4\"\n\nand then update the commit message on that and push that to gerrit","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"},{"author":{"_account_id":37271,"name":"Chinemerem Chigbo","display_name":"Chinemerem","email":"cchigbo@nvidia.com","username":"chinemerem"},"change_message_id":"1a151bde0d79e7d633463ff06acd53769cd1cc70","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        Args:"},{"line_number":240,"context_line":"            account (str): The account name."},{"line_number":241,"context_line":"            container (str): The container name."},{"line_number":242,"context_line":"            timestamp (float): The timestamp to add or update."},{"line_number":243,"context_line":"        \"\"\""},{"line_number":244,"context_line":"        # Ensure the timestamp is a float"},{"line_number":245,"context_line":"        timestamp \u003d float(timestamp)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ed340822_e60e48f8","line":242,"in_reply_to":"7ddcf887_2e085693","updated":"2024-12-09 18:30:49.000000000","message":"Whoops. Thank you.","commit_id":"0f1b0bedc02b1a4a1e8e6cf92f046affb59502a6"}]}
