)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3811c22c07b05d88290c87b5777c372d71256bbb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1499ed47_ddb1c14a","updated":"2025-05-12 11:48:28.000000000","message":"recheck","commit_id":"29285a9a4733fe2d3159812cc8b47d8fab9c114a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"da274abc946e11de408cfc7e8fa485c9848a8c14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a415c10e_3b1af9a6","updated":"2025-05-13 05:42:37.000000000","message":"recheck timeout","commit_id":"29285a9a4733fe2d3159812cc8b47d8fab9c114a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"7f7b75b5b192dcee2015958b029368cc8c73f819","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0445eadf_a954d954","updated":"2025-06-05 14:51:27.000000000","message":"Do we have a way to validate this with different Cinder backends performing volume to image uploads?  I am not sure if we can just assume that all Cinder configurations will upload the exact number of expected bytes - this seems like it might introduce a regression as-is.","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"847d04199590709d3731c031be5599fd4da75a1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f800553e_4c5b8878","updated":"2025-06-17 17:45:14.000000000","message":"OK, makes sense now. Just some nitpicking about the tests.","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f882feb2e5283ac686251032916b90a4a31597f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"de07e05e_d744af39","updated":"2025-05-16 14:03:02.000000000","message":"recheck cinder timeout","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"aa44546fd9011901c18d9801230a07d2e3bfc8cd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"21629779_a9c70fe3","in_reply_to":"0445eadf_a954d954","updated":"2025-06-05 14:54:15.000000000","message":"I need to cross check with @rajatdhasmana@gmail.com for other backends","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"31b0bad7d9da20882760b232e5639bf320f1e30c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a10ff1f4_5a70b410","in_reply_to":"21629779_a9c70fe3","updated":"2025-06-09 21:43:56.000000000","message":"IIUC, these validations will only happen if the end user supplies the size of the image.\nIn the upload volume to image workflow, currently we don\u0027t have a mechanism to pass the size of image[1] so probably we are safe, at least in the upload volume to image scenario.\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/image/glance.py#L457-L465","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"0640f851e139aca51d58485452c92229f7d6524d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6c2d9028_d932816b","updated":"2025-07-01 12:59:38.000000000","message":"Sorry I\u0027m late here ...\nCode looks good but I would like to verify this with a tempest run which we can do locally or after glance store gets released (since depends on testing doesn\u0027t seem to work).\nAnyways, this is less likely to occur in cinder but +1 on the change.","commit_id":"3d57de1f5a9f83cf5e4d0105828959341557a4d5"}],"glance_store/_drivers/cinder/store.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"b0b480b2f347f87ac49cac9229ce786901c46c40","unresolved":true,"context_lines":[{"line_number":1084,"context_line":"                                      \u0027%(volume_id)s.\u0027),"},{"line_number":1085,"context_line":"                                  {\u0027volume_id\u0027: volume.id})"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"        if image_size !\u003d 0 and write_props.bytes_written !\u003d image_size:"},{"line_number":1088,"context_line":"            # Delete the partial volume"},{"line_number":1089,"context_line":"            try:"},{"line_number":1090,"context_line":"                volume.delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"e9e18b00_ab9b7a39","line":1087,"range":{"start_line":1087,"start_character":11,"end_line":1087,"end_character":21},"updated":"2025-06-10 16:28:05.000000000","message":"So, it seems we are checking whether we wrote too much data in two different places (here and in _write_data). Couldn\u0027t we rather only do this check only once?","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3aa3a081b2985b06106dc122e37c3493d60e19e6","unresolved":false,"context_lines":[{"line_number":1084,"context_line":"                                      \u0027%(volume_id)s.\u0027),"},{"line_number":1085,"context_line":"                                  {\u0027volume_id\u0027: volume.id})"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"        if image_size !\u003d 0 and write_props.bytes_written !\u003d image_size:"},{"line_number":1088,"context_line":"            # Delete the partial volume"},{"line_number":1089,"context_line":"            try:"},{"line_number":1090,"context_line":"                volume.delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"634b9ea5_7e54d3c7","line":1087,"range":{"start_line":1087,"start_character":11,"end_line":1087,"end_character":21},"in_reply_to":"c79c91c8_64ec09bb","updated":"2025-06-19 16:44:57.000000000","message":"Done","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"24d710fc723219e6f599a139d88b7b476e3cacee","unresolved":true,"context_lines":[{"line_number":1084,"context_line":"                                      \u0027%(volume_id)s.\u0027),"},{"line_number":1085,"context_line":"                                  {\u0027volume_id\u0027: volume.id})"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"        if image_size !\u003d 0 and write_props.bytes_written !\u003d image_size:"},{"line_number":1088,"context_line":"            # Delete the partial volume"},{"line_number":1089,"context_line":"            try:"},{"line_number":1090,"context_line":"                volume.delete()"}],"source_content_type":"text/x-python","patch_set":6,"id":"c79c91c8_64ec09bb","line":1087,"range":{"start_line":1087,"start_character":11,"end_line":1087,"end_character":21},"in_reply_to":"e9e18b00_ab9b7a39","updated":"2025-06-11 13:42:37.000000000","message":"We are checking for over size as well as less data written than expected, so it\u0027s two different checks","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3575827ce3f651fb65d2f3ea94e48d364990e9ad","unresolved":true,"context_lines":[{"line_number":1093,"context_line":"                             \"exceeding image_size.\"),"},{"line_number":1094,"context_line":"                         {\u0027volume_id\u0027: volume.id})"},{"line_number":1095,"context_line":"            except Exception:"},{"line_number":1096,"context_line":"                LOG.exception(_LE(\u0027Failed to delete of volume \u0027"},{"line_number":1097,"context_line":"                                  \u0027%(volume_id)s.\u0027),"},{"line_number":1098,"context_line":"                              {\u0027volume_id\u0027: volume.id})"},{"line_number":1099,"context_line":"            # Raise an exception with image size info"}],"source_content_type":"text/x-python","patch_set":9,"id":"4a7a4e5e_119c4bbb","line":1096,"range":{"start_line":1096,"start_character":35,"end_line":1096,"end_character":62},"updated":"2025-06-30 14:53:59.000000000","message":"\"Failed to delete of volume\" is not proper, but I see it was copied from above. However, it seems like in both cases we should log that we failed to delete the volume *during cleanup from another error*. Otherwise this will look in the logs kinda like its own failure that we\u0027re ignoring.","commit_id":"3d57de1f5a9f83cf5e4d0105828959341557a4d5"}],"glance_store/tests/unit/cinder/test_cinder_base.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"847d04199590709d3731c031be5599fd4da75a1e","unresolved":true,"context_lines":[{"line_number":625,"context_line":"                                 len(expected_file_contents))"},{"line_number":626,"context_line":"            else:"},{"line_number":627,"context_line":"                self.assertEqual(image_file.tell(),"},{"line_number":628,"context_line":"                                 len(expected_file_contents))"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def test_cinder_add_volume_not_found(self):"},{"line_number":631,"context_line":"        image_file \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":6,"id":"d135aab3_820f076d","line":628,"range":{"start_line":628,"start_character":0,"end_line":628,"end_character":33},"updated":"2025-06-17 17:45:14.000000000","message":"I think this is the same check in if: and else:, right? So this could be a single line.","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3aa3a081b2985b06106dc122e37c3493d60e19e6","unresolved":false,"context_lines":[{"line_number":625,"context_line":"                                 len(expected_file_contents))"},{"line_number":626,"context_line":"            else:"},{"line_number":627,"context_line":"                self.assertEqual(image_file.tell(),"},{"line_number":628,"context_line":"                                 len(expected_file_contents))"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def test_cinder_add_volume_not_found(self):"},{"line_number":631,"context_line":"        image_file \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f4149aa_7faacb2f","line":628,"range":{"start_line":628,"start_character":0,"end_line":628,"end_character":33},"in_reply_to":"d135aab3_820f076d","updated":"2025-06-19 16:44:57.000000000","message":"Done","commit_id":"1462f0bff8351236cc289fdbf277d7881b296555"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3575827ce3f651fb65d2f3ea94e48d364990e9ad","unresolved":true,"context_lines":[{"line_number":621,"context_line":"                self.store.add(expected_image_id, image_file, expected_size,"},{"line_number":622,"context_line":"                               self.hash_algo, self.context, verifier)"},{"line_number":623,"context_line":"            except exceptions.Invalid as e:"},{"line_number":624,"context_line":"                self.assertIn(expected_error, e.msg)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"            fake_volume.delete.assert_called_once()"},{"line_number":627,"context_line":"            self.assertEqual(image_file.tell(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"2059231b_b00500c1","line":624,"updated":"2025-06-30 14:53:59.000000000","message":"My final \"this should be `assertRaisesRegex()` reminder. At least this test is less duplicated than the others.","commit_id":"3d57de1f5a9f83cf5e4d0105828959341557a4d5"}]}
