)]}'
{"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f3746e89a21eb08be1e9f5e5abf817ef4676e32c","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        self.assertEqual(self.host.get_domain_info(mock), expected)"},{"line_number":744,"context_line":"        self.assertRaises(libvirt.libvirtError,"},{"line_number":745,"context_line":"                          self.host.get_domain_info, mock)"},{"line_number":746,"context_line":"        self.mox.VerifyAll()"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_f2670ce8","line":746,"updated":"2015-02-18 19:21:53.000000000","message":"All of the other tests use mock instead of mox, so I think it would be a shame to introduce mox in here. I think you can easily do similar for example mock_info.side_effect \u003d [expected, race, race, expected, race, race]","commit_id":"d91249e2cd612ca56399e3bc47bccce23fa6d4f3"}],"nova/utils.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6f7e5589fcb1621b98680a8e5e39c3017918a2be","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                     \u0027mechanism to disable livesnapshot while this is \u0027"},{"line_number":105,"context_line":"                     \u0027resolved.  See \u0027"},{"line_number":106,"context_line":"                     \u0027https://bugs.launchpad.net/nova/+bug/1334398\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027retry_libvirt_info\u0027,"},{"line_number":108,"context_line":"                default\u003dTrue,"},{"line_number":109,"context_line":"                help\u003d\u0027Method libvirt.virDomain.info can fail due to a \u0027"},{"line_number":110,"context_line":"                     \u0027race condition (libvirt \u003c 1.2.11). \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_5a2b33eb","line":107,"updated":"2015-02-20 09:09:08.000000000","message":"are we sure it\u0027s the good way ?\n\nI thought there was some discussions about libivirt caps, I don\u0027t think adding a new Opt is good","commit_id":"e53e920f6795e3b861eda5a36e0141c05cc83dcd"},{"author":{"_account_id":13817,"name":"Eduardo Costa","email":"eduardobmc@gmail.com","username":"ecosta"},"change_message_id":"b147e5b7375a74eaeea313cc67fcc188f06d3b9f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                     \u0027mechanism to disable livesnapshot while this is \u0027"},{"line_number":105,"context_line":"                     \u0027resolved.  See \u0027"},{"line_number":106,"context_line":"                     \u0027https://bugs.launchpad.net/nova/+bug/1334398\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027retry_libvirt_info\u0027,"},{"line_number":108,"context_line":"                default\u003dTrue,"},{"line_number":109,"context_line":"                help\u003d\u0027Method libvirt.virDomain.info can fail due to a \u0027"},{"line_number":110,"context_line":"                     \u0027race condition (libvirt \u003c 1.2.11). \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_6fbbd3c4","line":107,"in_reply_to":"ba7be1f8_5a2b33eb","updated":"2015-02-20 13:23:15.000000000","message":"There have been some comments asking for a on/off switch for this retry, so I thought this would be the way to go. Furthermore, by looking at the other options in this group, this seems to be the right place to put it.\nDo you have any suggestions on how to proceed?","commit_id":"e53e920f6795e3b861eda5a36e0141c05cc83dcd"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b5d71125210837d394b54a16c39de0148dacb622","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                     \u0027mechanism to disable livesnapshot while this is \u0027"},{"line_number":105,"context_line":"                     \u0027resolved.  See \u0027"},{"line_number":106,"context_line":"                     \u0027https://bugs.launchpad.net/nova/+bug/1334398\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027retry_libvirt_info\u0027,"},{"line_number":108,"context_line":"                default\u003dTrue,"},{"line_number":109,"context_line":"                help\u003d\u0027Method libvirt.virDomain.info can fail due to a \u0027"},{"line_number":110,"context_line":"                     \u0027race condition (libvirt \u003c 1.2.11). \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_a919afd8","line":107,"updated":"2015-02-25 10:25:13.000000000","message":"Thinking again I\u0027m not sure we want to let the operators thinking about to activate or not this option. Can we just fix the issue here.","commit_id":"bba5a2e40c11bb9fcd23d7b8a3a0f27052f9ebed"},{"author":{"_account_id":13817,"name":"Eduardo Costa","email":"eduardobmc@gmail.com","username":"ecosta"},"change_message_id":"5692b88ccf78aadef33f7caf9f39561365f199aa","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                     \u0027mechanism to disable livesnapshot while this is \u0027"},{"line_number":105,"context_line":"                     \u0027resolved.  See \u0027"},{"line_number":106,"context_line":"                     \u0027https://bugs.launchpad.net/nova/+bug/1334398\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027retry_libvirt_info\u0027,"},{"line_number":108,"context_line":"                default\u003dTrue,"},{"line_number":109,"context_line":"                help\u003d\u0027Method libvirt.virDomain.info can fail due to a \u0027"},{"line_number":110,"context_line":"                     \u0027race condition (libvirt \u003c 1.2.11). \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_1ace652e","line":107,"in_reply_to":"ba7be1f8_2f120d62","updated":"2015-02-25 17:17:23.000000000","message":"Good point, sahid. I agree that adding a new option adds complexity to operators. But before removing it, let\u0027s hear from Matt and Dan, who suggested adding it.","commit_id":"bba5a2e40c11bb9fcd23d7b8a3a0f27052f9ebed"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2dfd71cc34783307a99119a0e27d6af8bdf26ea2","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                     \u0027mechanism to disable livesnapshot while this is \u0027"},{"line_number":105,"context_line":"                     \u0027resolved.  See \u0027"},{"line_number":106,"context_line":"                     \u0027https://bugs.launchpad.net/nova/+bug/1334398\u0027),"},{"line_number":107,"context_line":"    cfg.BoolOpt(\u0027retry_libvirt_info\u0027,"},{"line_number":108,"context_line":"                default\u003dTrue,"},{"line_number":109,"context_line":"                help\u003d\u0027Method libvirt.virDomain.info can fail due to a \u0027"},{"line_number":110,"context_line":"                     \u0027race condition (libvirt \u003c 1.2.11). \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_2f120d62","line":107,"in_reply_to":"ba7be1f8_a919afd8","updated":"2015-02-25 17:00:49.000000000","message":"I\u0027m ambivalent about the config option. The alternative is to check the version of libvirt in the code and retry if it\u0027s \u003c 1.2.11. I like that idea in that there\u0027s no thinking required by operators and it would automatically be skipped if and when 1.2.11 is installed (seems a lot simpler).","commit_id":"bba5a2e40c11bb9fcd23d7b8a3a0f27052f9ebed"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"03d525fd2cf66420fe0b5118fc094167fc4bc579","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        global libvirt"},{"line_number":423,"context_line":"        if libvirt is None:"},{"line_number":424,"context_line":"            libvirt \u003d importutils.import_module(\u0027libvirt\u0027)"},{"line_number":425,"context_line":"        patch_libvirt()"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        self._host \u003d host.Host(self.uri(), read_only,"},{"line_number":428,"context_line":"                               lifecycle_event_handler\u003dself.emit_event,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_ac3187a3","line":425,"updated":"2015-02-12 18:14:55.000000000","message":"Maybe this should go in the [workarounds] config option group now that we have it?  That seems to be what this was created for.\n\nThere should at least big a big TODO in here to remove this once we\u0027re supporting a minimum version of libvirt that has the fix.","commit_id":"6dacfba62310a934000f50a1afe092a7e1ef9a02"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"810963b0debff3238df8d37f045fe0e07186f48d","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        if secret is not None:"},{"line_number":739,"context_line":"            secret.undefine()"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def get_domain_info(self, virt_dom):"},{"line_number":742,"context_line":"        \"\"\"Method virDomain.info (libvirt version \u003c 1.2.11) is"},{"line_number":743,"context_line":"        affected by a race condition. See bug #1372670 for more details."},{"line_number":744,"context_line":"        This method detects it to (optionally) perform a retry."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_4e31b50a","line":741,"updated":"2015-02-20 11:46:18.000000000","message":"Instead of using an option here, what about to:\n\n- add a condition to run that only with libvirt \u003c 1.2.11\n- hardcore the retry for 3 tries with a sleep(0) to let other threads take cpu time.","commit_id":"e53e920f6795e3b861eda5a36e0141c05cc83dcd"},{"author":{"_account_id":13817,"name":"Eduardo Costa","email":"eduardobmc@gmail.com","username":"ecosta"},"change_message_id":"b147e5b7375a74eaeea313cc67fcc188f06d3b9f","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        if secret is not None:"},{"line_number":739,"context_line":"            secret.undefine()"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def get_domain_info(self, virt_dom):"},{"line_number":742,"context_line":"        \"\"\"Method virDomain.info (libvirt version \u003c 1.2.11) is"},{"line_number":743,"context_line":"        affected by a race condition. See bug #1372670 for more details."},{"line_number":744,"context_line":"        This method detects it to (optionally) perform a retry."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_a1315fa4","line":741,"in_reply_to":"ba7be1f8_4e31b50a","updated":"2015-02-20 13:23:15.000000000","message":"If this is fixed in 1.2.11, is_race() will always be false and the retry won\u0027t be called. If this is not fixed, this will be gone for a while, until everyone starts using \u003e\u003d1.2.11 and races start happening again. The new option seems to cover both scenarios. What do you think?\n\nThe race happens when the domain is shutdown during the virt_dom.info() call. Retrying more once, in this case, seems to be unecessary.","commit_id":"e53e920f6795e3b861eda5a36e0141c05cc83dcd"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"bc3291b3f0ddfc9398c563db69fbf16de977f958","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        if secret is not None:"},{"line_number":739,"context_line":"            secret.undefine()"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def get_domain_info(self, virt_dom):"},{"line_number":742,"context_line":"        \"\"\"Method virDomain.info (libvirt version \u003c 1.2.11) is"},{"line_number":743,"context_line":"        affected by a race condition. See bug #1372670 for more details."},{"line_number":744,"context_line":"        This method detects it to (optionally) perform a retry."}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_e1bb5770","line":741,"in_reply_to":"ba7be1f8_a1315fa4","updated":"2015-02-20 13:36:20.000000000","message":"Yes, fair enough for me Eduardo. I think the option is a little bit overkill but let other contributors give opinions. Thanks","commit_id":"e53e920f6795e3b861eda5a36e0141c05cc83dcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bbc97638609858b23e7206393dc692774d207b56","unresolved":false,"context_lines":[{"line_number":872,"context_line":"                LOG.warn(_LW(\u0027Race condition in libvirt.virDomain.info, \u0027"},{"line_number":873,"context_line":"                             \u0027trying one more time\u0027))"},{"line_number":874,"context_line":"                return virt_dom.info()"},{"line_number":875,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_b22426b0","line":875,"updated":"2015-03-05 09:52:35.000000000","message":"I still have some serious concerns about putting that code now which could stay for a while and introduce a pattern where old downstream libvirt version bugs would be managed by Nova. I know that some other workarounds can be found in the codepath but maybe we should make sure that we correctly isolate that specific method into a separate module (let\u0027s call it nova.virt.libvirt.compat for example) so that we have a single place to look at for the version upgrades and remove old nasty bugfixes.\n\nThat said, that\u0027s my .02, I leave others comment it out.","commit_id":"ac71604713b24ff5c1e2bc7b5b7d2449f34eb744"}]}
