)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"9ce9336867a2ddb5ea415e35afd417af3fc8c8c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"20f02d95_15a76c37","updated":"2022-08-04 14:18:05.000000000","message":"One suggestion -- and a thought mentioned elsewhere about whether or not it\u0027s beneficial to spin and see if this condition is transient before concluding that the migration is completed.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"795f784931519893d7fceeb92a1466304f404b84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e9edde17_2ebdd26a","updated":"2022-08-04 20:19:41.000000000","message":"This change looks good. Previously reviewers requested a release note to go along with a fix for this, so if you can add one or copy the previous one [1], it would be good.\n\n[1] https://review.opendev.org/c/openstack/nova/+/842687/4/releasenotes/notes/libvirt-workaround-no-ram-info-was-set-6f3f6dbc751d6b66.yaml ","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b1dc982ac9e6b56f0a3aee7825859ed58e4d7995","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"18f7fa4d_670f5e95","updated":"2022-08-04 18:43:00.000000000","message":"this would also work but I have approved. \nhttps://review.opendev.org/c/openstack/nova/+/842687 instead since it was already reviewed, has a release note and a similar level of test coverage.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"becad06ccfc918aeb3f232ab2f22068b6406378b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"aecfae0e_38c65ef9","in_reply_to":"18f7fa4d_670f5e95","updated":"2022-08-04 20:06:12.000000000","message":"I\u0027ve pulled my patch out of the gate because upon further inspection, I think it will not work properly.\n\nI think the approach in this patch is what needs to be done.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"9e61da8f9ade3d4d07e843255bac1f333a7f1115","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ebcf77ed_54413b47","updated":"2022-08-17 01:46:23.000000000","message":"I\u0027ve managed to reproduce this today and added additional logic and logging when the libvirt.VIR_ERR_INTERNAL_ERROR is observed (sorry, it\u0027s sloppy...):\nhttps://paste.opendev.org/show/bNq9IPAZLarlSwThfodZ/\n\nThe additional logic re-invokes `self._domain.jobStats()` up to 10x with 100ms sleeps in between after first observing the libvirt.VIR_ERR_INTERNAL_ERROR. In doing so, I observed that it is possible that we get a dict with \u0027type: 2\u0027 in the response, or libvirt.VIR_DOMAIN_JOB_UNBOUNDED, indicating that the migration is still active.\n\nThus, I believe it\u0027s not safe to conclude that libvirt.VIR_ERR_INTERNAL_ERROR means the migration has completed based on the above. The patch is definitely on the right track though, and even as-is prevents the migration from erroring out (it just coerces Nova into thinking that the migration finished earlier than it actually does).\n\nPlease let me know if anyone disagrees with this analysis, or would like more information gathered.\n\n(and note that even the \"fix\" which I posted above in the paste is *still* not correct -- because it\u0027s possible that *another* exception gets thrown while doing the nested `self._domain.jobStats()`, in which case we may have to raise a subsequent libvirt.VIR_ERR_NO_DOMAIN or libvirt.VIR_ERR_OPERATION_INVALID error into a finished migration...)","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"67bd5d02969b8ee0f9dd624a8f33ad15ce58c6f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"21a403c2_32588a42","updated":"2022-08-17 00:25:47.000000000","message":"Looks OK to me. +1 for now, I want to try to write a test  or find a test verifying that handling of this scenario (and other similar ones) properly call post_live_migration after they are handled.\n\nWant to get more eyes on this too.","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":26032,"name":"Brett Milford","email":"brett.milford@canonical.com","username":"brett"},"change_message_id":"302d0c7a302affeb5ec177be8159491f2e3aadcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bd2d1d51_e84809cf","updated":"2022-08-16 04:28:32.000000000","message":"Release note added.","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8580bc37b408f8e083dd01c84502c29642b96f46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ec30d202_38b92939","updated":"2022-08-16 10:18:49.000000000","message":"i have some thing i need to get in order before the feature freeze so im gong to focus on that this week. however if melanine things this is the better approch i will review this once i have time.\n\nthanks for adding the release note.","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"24b8578b8bba19a035891255f8db42ef260e8c2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9a59a1fb_4f1b79bc","in_reply_to":"37ed8e3d_52d3a50a","updated":"2022-08-25 19:49:10.000000000","message":"Looked again today, and now I see how finish_event is used -- my concern above was unfounded.  This should work great, and the reproducer we have agrees. Great job!","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"da8541e6e2761de7ca982de416cb438bb44d61c0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"37ed8e3d_52d3a50a","in_reply_to":"92fe4840_f2a5d8c7","updated":"2022-08-21 22:17:35.000000000","message":"Hit this condition several times this weekend on our reproducer, but with the patch changed to return type\u003dlibvirt.VIR_DOMAIN_JOB_NONE, instead. It seems to work great!","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"f976744b7ed23227bbe25a1d30f9c42ba9237e92","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"92fe4840_f2a5d8c7","in_reply_to":"9825ee94_b3d96f2e","updated":"2022-08-18 17:53:59.000000000","message":"I\u0027m happy to give it a try on our reproducer -- eyeing the code quickly, it\u0027s not clear to me when and when not the finish_event.ready() branch is taken... in the case it\u0027s not taken, it looks like find_job_type() will raise VIR_DOMAIN_JOB_FAILED [1] because the guest is active on the source in the event the migration is still active, though?\n\nHere [2] is another approach that also works -- it changes the function signature and relies on recursion though... your type\u003dlibvirt.VIR_DOMAIN_JOB_NONE is much, much cleaner I think.\n\n[1] https://github.com/openstack/nova/blob/e413ac015f7b5cbfb7b1ac98ca02afc700e0a6b7/nova/virt/libvirt/migration.py#L435\n[2] https://paste.opendev.org/show/bBFVEgM1si5SoChuH3m0/","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":26032,"name":"Brett Milford","email":"brett.milford@canonical.com","username":"brett"},"change_message_id":"0130cb32e77d82c62dc381a567f43abd67f20ab7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9825ee94_b3d96f2e","in_reply_to":"c534e68b_a89f31d8","updated":"2022-08-18 05:27:38.000000000","message":"Thanks for your testing and analysis! - I confirms the suspicions that my debug message alludes too.\n\nIf we return JobInfo with type\u003dlibvirt.VIR_DOMAIN_JOB_NONE I wonder if we can reuse this [1] infrastructure to continue the migration until it eventually meets one of the expected completion states.\n\n[1] https://github.com/openstack/nova/blob/4c7d81ebca52d2b63d4ad819b58953e285864337/nova/virt/libvirt/driver.py#L10134-L10139","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"33d39f8808edebdad97f80e4a939a53012172b0b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c534e68b_a89f31d8","in_reply_to":"ebcf77ed_54413b47","updated":"2022-08-17 03:09:45.000000000","message":"Interesting, and nice work! Thank you for doing that. I agree this is worth looking into further.\n\nI wonder if we could do something like ignore the \"no RAM info set\" any time we encounter it and then let monitoring continue until it hits one of the other expected \"completion\" conditions, then we call it complete. (That is, assuming the migration does hit an expected completion state eventually.)\n\nIf we could avoid erroneously considering a migration complete when it really isn\u0027t, that would be ideal.","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"67bd5d02969b8ee0f9dd624a8f33ad15ce58c6f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5b276b1d_14c2838c","in_reply_to":"ec30d202_38b92939","updated":"2022-08-17 00:25:47.000000000","message":"To be clear, once I saw this patch I realized that the patch I had proposed will not work correctly as I think it would prevent post_live_migration from running.\n\nThe approach in this patch will run post_live_migration after catching \"no RAM info set\".\n\nI realize as I type this, it\u0027s probably worth adding test coverage that asserts post_live_migration is called after the scenario happens. Since it\u0027s not directly related to this patch and it would also apply to other libvirt exception handling, I think it could be its own follow up patch.","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"24b8578b8bba19a035891255f8db42ef260e8c2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"16b6bec8_f9f6afe1","updated":"2022-08-25 19:49:10.000000000","message":"Looks good to me","commit_id":"cc52c913ba59d3e8aa311f641c310bb19d9a03d3"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"681d7d58423f0838caab8f33310c7047baa2b668","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3d6b9d4c_6612fa9e","updated":"2022-09-27 00:47:52.000000000","message":"Apologies for taking so long to get back to this patch. I have finally uploaded a test coverage follow up patch for this one and it exercises that the post live migration method is properly called after this exception is raised along the way.\n\nSo all LGTM, thank you Brett and Tyler!","commit_id":"9fea934c71d3c2fa7fdd80c67d94e18466c5cf9a"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"39f359fa5913c5f1ce1d8772c02319e9c8ab6ae7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b561396b_4d89fd8e","updated":"2022-10-05 16:13:19.000000000","message":"Let\u0027s get this merged, please.  It does solve an annoying problem.","commit_id":"9fea934c71d3c2fa7fdd80c67d94e18466c5cf9a"},{"author":{"_account_id":26032,"name":"Brett Milford","email":"brett.milford@canonical.com","username":"brett"},"change_message_id":"2d7735bef614fde6a7b49dfff77db522a3f88f22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"91dd6c39_163973c2","updated":"2022-08-31 00:07:50.000000000","message":"Tidied up patch set with minor wording/formatting changes.","commit_id":"9fea934c71d3c2fa7fdd80c67d94e18466c5cf9a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"46a1b0d38f3bbc5f2650d700e1c37e50bd597b50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8b62c312_c2777d09","updated":"2022-09-28 14:20:41.000000000","message":"lgtm","commit_id":"9fea934c71d3c2fa7fdd80c67d94e18466c5cf9a"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"481e1344950c7818944be79b7b67fbde7e782e3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d8d03946_c2e5f3c9","updated":"2022-10-06 19:54:50.000000000","message":"recheck bug 1991962","commit_id":"9fea934c71d3c2fa7fdd80c67d94e18466c5cf9a"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"795f784931519893d7fceeb92a1466304f404b84","unresolved":true,"context_lines":[{"line_number":668,"context_line":"                    # away completclsely"},{"line_number":669,"context_line":"                    LOG.debug(\"Domain has shutdown/gone away: %s\", ex)"},{"line_number":670,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"}],"source_content_type":"text/x-python","patch_set":1,"id":"96b0900d_cb77fcbb","line":672,"range":{"start_line":671,"start_character":76,"end_line":672,"end_character":28},"updated":"2022-08-04 20:19:41.000000000","message":"Not sure you need this part but of course it doesn\u0027t hurt.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":26032,"name":"Brett Milford","email":"brett.milford@canonical.com","username":"brett"},"change_message_id":"302d0c7a302affeb5ec177be8159491f2e3aadcd","unresolved":false,"context_lines":[{"line_number":668,"context_line":"                    # away completclsely"},{"line_number":669,"context_line":"                    LOG.debug(\"Domain has shutdown/gone away: %s\", ex)"},{"line_number":670,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9442ee72_956461ee","line":672,"range":{"start_line":671,"start_character":76,"end_line":672,"end_character":28},"in_reply_to":"96b0900d_cb77fcbb","updated":"2022-08-16 04:28:32.000000000","message":"Ack","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"9ce9336867a2ddb5ea415e35afd417af3fc8c8c1","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":677,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"492f2276_72342930","line":674,"updated":"2022-08-04 14:18:05.000000000","message":"Perhaps this is better at LOG.warning? Operators generally do not run with debug\u003dtrue and this condition hit frequently is a sign of some kind of issue that likely needs more investigation.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"795f784931519893d7fceeb92a1466304f404b84","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":677,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4a54f3f9_ab54f1d2","line":674,"in_reply_to":"492f2276_72342930","updated":"2022-08-04 20:19:41.000000000","message":"IMHO I think debug is appropriate. It\u0027s consistent with the other messages and this condition is unfortunately not avoidable when it happens (because it\u0027s due to a bug/behavior in qemu). There is no action an operator can take for this, so a warning log level for this may cause unnecessary alarm.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"70193c621641231707fdf6b3dd9909b57e3cecd1","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":677,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ab857403_3753b267","line":674,"in_reply_to":"4a54f3f9_ab54f1d2","updated":"2022-08-04 20:31:56.000000000","message":"I believe the race condition is this:\nhttps://lists.gnu.org/archive/html/qemu-devel/2022-04/msg01395.html\n\nMy 2c here:\nIf there is either a) a high degree of confidence in the above patch or similar, or b) a reproducer for this race condition (please share details!), then I agree it\u0027s best served at debug. If not, though, raising it to warn will help determine if and when the underlying race condition is fixed out in the field at scale.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":26032,"name":"Brett Milford","email":"brett.milford@canonical.com","username":"brett"},"change_message_id":"302d0c7a302affeb5ec177be8159491f2e3aadcd","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":677,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"e897dddd_81aeb58a","line":674,"in_reply_to":"4c38108a_49d256dd","updated":"2022-08-16 04:28:32.000000000","message":"My 2c - I\u0027d would find it awkward that we would throw a warning but then pass the migration. As an operator I\u0027d be concerned it was indicative of /some/ malfunction in nova.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9090fc20f62e8944b5d94cd921375e0790852a37","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":677,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef3e8153_d4df92d4","line":674,"in_reply_to":"ab857403_3753b267","updated":"2022-08-04 21:05:43.000000000","message":"You are correct, that is the race condition that is suspected.\n\nFair point on detecting if and when the race condition is fixed.\n\nIf this race happens rarely (and so far, my understanding is that it is rare) then warning might be OK. What we don\u0027t want is for this to be logged so often that it becomes noise.\n\nIn my experience, warnings are generally used to signal to the operator that they should do something, check something, or let them know that something unexpected has happened. I thought this didn\u0027t quite fit into that category.\n\nI don\u0027t feel strongly about it though, so if most people prefer warning, that is OK with me. If we do use warning, I think it should also mention that no action is needed.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":33910,"name":"Tyler Stachecki","display_name":"Tyler Stachecki","email":"tstachecki@bloomberg.net","username":"tjstachecki"},"change_message_id":"edfa0d9caf7c86932be0dfdb356f6abae94f6362","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                elif (ex.get_error_code() \u003d\u003d libvirt.VIR_ERR_INTERNAL_ERROR and"},{"line_number":672,"context_line":"                      errmsg and \"migration was active, \""},{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration likely completed but jobStats() \""},{"line_number":675,"context_line":"                              \"missing ram. %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_COMPLETED)"},{"line_number":677,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4c38108a_49d256dd","line":674,"in_reply_to":"ef3e8153_d4df92d4","updated":"2022-08-04 21:25:46.000000000","message":"Thanks for the confirmation on the patch.\n\nFor hard #s in one use case - in about a week\u0027s time of pushing around ~15k VMs, I saw it happen a dozen times per our telemetry.\n\nRethinking this -- if we leave this as debug, I can advocate to deploy it as a warning in our deployment and make sure that the qemu patch addresses the race condition when we get around to incorporating it (and if so, I\u0027ll update the LP with findings). All I really want to see here is that we don\u0027t rely on this branch unknowingly in the long-term.","commit_id":"a42fad9b762aaaa9616f161c40913cbd234c0af6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b1f369b78cbc47da18447a485e9a1a0653fa5464","unresolved":false,"context_lines":[{"line_number":673,"context_line":"                      \"but no RAM info was set\" in errmsg):"},{"line_number":674,"context_line":"                    LOG.debug(\"Migration is active or completed but \""},{"line_number":675,"context_line":"                              \"virDomainGetJobStats is missing ram: %s\", ex)"},{"line_number":676,"context_line":"                    return JobInfo(type\u003dlibvirt.VIR_DOMAIN_JOB_NONE)"},{"line_number":677,"context_line":"                else:"},{"line_number":678,"context_line":"                    LOG.debug(\"Failed to get job stats: %s\", ex)"},{"line_number":679,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":6,"id":"c1c458a8_ccbb99ff","line":676,"updated":"2022-10-06 12:22:26.000000000","message":"For VIR_DOMAIN_JOB_NONE the caller will try to figure out the status of the migration based on the instance status in nova.virt.libvirt.migration.find_job_type() which probably work OK.","commit_id":"9fea934c71d3c2fa7fdd80c67d94e18466c5cf9a"}],"releasenotes/notes/bug-1982284-libvirt-handle-no-ram-info-was-set-99784934ed80fd72.yaml":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"67bd5d02969b8ee0f9dd624a8f33ad15ce58c6f5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"28d4bb8f_1005e4d6","line":10,"updated":"2022-08-17 00:25:47.000000000","message":"FYI the reno won\u0027t necessarily render with the same line breaks you included unless there are blank lines between them. See the doc preview from the releasenotes job:\nhttps://969d49ac5f3f180b4d2a-364b13067bb3707ca086ba682881f513.ssl.cf1.rackcdn.com/852002/2/check/build-openstack-releasenotes/b861bea/docs/unreleased.html#other-notes","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"},{"author":{"_account_id":26032,"name":"Brett Milford","email":"brett.milford@canonical.com","username":"brett"},"change_message_id":"2d7735bef614fde6a7b49dfff77db522a3f88f22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e378c16a_dad2009d","line":10,"in_reply_to":"28d4bb8f_1005e4d6","updated":"2022-08-31 00:07:50.000000000","message":"Done","commit_id":"b6aea13f83a3dc8445a386d2038959472d22ccb8"}]}
