)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"bcaf3078acb6e2a3528b1bfcc0270ae75ece1351","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"933e2799_c1bf8234","updated":"2025-09-16 11:33:55.000000000","message":"I hope that clarifies the motivation.","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"c754525ac030e4b861570c1030c6fee2b235dbe5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"42483835_b546efaa","updated":"2025-09-16 10:10:55.000000000","message":"Is it not possible to delete the backing before trying to pull the image? I mean why do we need this indirection of letting `fetch_stream_optimized_image()` delete the backing?","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"bcaf3078acb6e2a3528b1bfcc0270ae75ece1351","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"de12533f_488d0d4c","in_reply_to":"42483835_b546efaa","updated":"2025-09-16 11:33:55.000000000","message":"Sure, it is possible, but it would be wider ranging change.\n`fetch_stream_optimized_image` currently already deletes the backing. It just leaves the volume in an error state.\n\nThe standard case is, that there initially there is no backing. It is the exceptional case, that we need to delete it due to the function being called via `copy_image_to_volume`. So exceptional, that no one seemed to have cared for years.\nI\u0027d rather not increase the overhead for the standard case.\n\n\nThe function `copy_image_to_volume` is called in `VolumeManager.reimage`. One could change the interface to transport the information, if the destination exists, and only delete then optionally. That would potentially be cleaner, as it allows one to make the `copy_image_to_volume` not accidentally overwrite destination files.\n\nBut as it stands, the interface seems to expect that `copy_image_to_volume` overwrites the destination volume.","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"14d9d189893ed7047c23b7d52da28fd61192cbf6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f71e662b_1b516d60","in_reply_to":"6e577ae7_828be650","updated":"2025-09-16 15:06:14.000000000","message":"You could put it that way, but it it less the overhead, but the impact.\n\nThe backing has always been deleted in the exception. Now I just retry it in case there is a certain exception: That the file already existed.\nOverwriting the destination is apparently the desired semantics of `copy_image_to_volume` and by extension `fetch_stream_optimized_image`.","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"6ffcc0de8e19180ec33391d7024762c9b7d9e62d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b6f45530_ac12f8ad","in_reply_to":"933e2799_c1bf8234","updated":"2025-09-16 14:12:27.000000000","message":"Acknowledged","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"6ffcc0de8e19180ec33391d7024762c9b7d9e62d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6e577ae7_828be650","in_reply_to":"de12533f_488d0d4c","updated":"2025-09-16 14:12:27.000000000","message":"Thank you for the pointers.\n\nDo I get you correctly, that you want to avoid the overhead of checking for an existing backing in `copy_image_to_volume`, because - as you said - in nearly all cases this backing does not yet exist? You value the overhead enough, that you\u0027d go with an implicit deletion instead of an explicit one in `copy_image_to_volume`?","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"f71926e5399ee8f585ecf3bec981922af77ebc2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c9b6b3b3_f214ba6f","in_reply_to":"f71e662b_1b516d60","updated":"2025-09-17 07:16:54.000000000","message":"Acknowledged","commit_id":"4b7fd793eb717fa710c47cba2a3b0660115b034e"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"6ffcc0de8e19180ec33391d7024762c9b7d9e62d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a6d9f0cf_796541f5","updated":"2025-09-16 14:12:27.000000000","message":"`copy_image_to_volume` has a second code-path with `_create_volume_from_non_stream_optimized_image()`. This seems to call `_create_backing()` which can also raise `DuplicateName` - which probably makes the reimage fail. I think we need to handle that, too.","commit_id":"deedd4b3961366229772810bbf8e964098e2b96c"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"0918a933a3b4fb56b096da94c1655d960514f8d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0a95090c_139f72d7","in_reply_to":"2d79713e_52c2cece","updated":"2025-09-17 12:07:09.000000000","message":"Acknowledged","commit_id":"deedd4b3961366229772810bbf8e964098e2b96c"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"14d9d189893ed7047c23b7d52da28fd61192cbf6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2d79713e_52c2cece","in_reply_to":"a6d9f0cf_796541f5","updated":"2025-09-16 15:06:14.000000000","message":"You are right, I adjust the commit message and have a look at that path as well.","commit_id":"deedd4b3961366229772810bbf8e964098e2b96c"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"0918a933a3b4fb56b096da94c1655d960514f8d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5753614b_b763121c","updated":"2025-09-17 12:07:09.000000000","message":"Looks like it could fix the problem.","commit_id":"4870ae9138cc29f755fa5d59674d3a2e76519466"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0785418e182fc41e5e253658910efe5b826a1165","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9986f78e_d2b2aa44","updated":"2025-10-14 16:16:57.000000000","message":"The solution makes sense to me.  Good description and another +2 from a Core.  I think this is safe to merge.","commit_id":"4870ae9138cc29f755fa5d59674d3a2e76519466"}]}
