)]}'
{"nova/virt/libvirt/driver.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"ed1784524df53a92e36d56ba1173197a7df5cb51","unresolved":false,"context_lines":[{"line_number":1868,"context_line":"                        \u0027QEMU agent unresponsive\u0027,"},{"line_number":1869,"context_line":"                        {\u0027method\u0027: \"quiesce\" if quiesced else \"unquiesce\"},"},{"line_number":1870,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":1871,"context_line":"                raise NotImplementedError()"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(ex)"},{"line_number":1874,"context_line":"            msg \u003d (_(\u0027Error from libvirt while quiescing %(instance_name)s: \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf8cb3f7_3c477c4e","line":1871,"range":{"start_line":1871,"start_character":22,"end_line":1871,"end_character":41},"updated":"2017-12-21 09:56:10.000000000","message":"agreed with @Kevin, -1 for this.","commit_id":"33a000895a3ca67659b34405ee1c4f64960f5fd5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"82651a5a2e58a9262f15b22b4834750de126652a","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"            if self._requires_quiesce(image_meta):"},{"line_number":1930,"context_line":"                raise NotImplementedError(_(\u0027_set_quiesced is not implemented \u0027"},{"line_number":1931,"context_line":"                                            \u0027by this guest instance.\u0027))"},{"line_number":1932,"context_line":"                LOG.warning(\u0027Skipping quiescing instance: _set_quiesced is \u0027"},{"line_number":1933,"context_line":"                        \u0027not implemented by this guest instance.\u0027,"},{"line_number":1934,"context_line":"                        instance\u003dinstance)"},{"line_number":1935,"context_line":""},{"line_number":1936,"context_line":"        try:"},{"line_number":1937,"context_line":"            # NOTE (rmk): blockRebase cannot be executed on persistent"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_f86f3e25","line":1934,"range":{"start_line":1932,"start_character":0,"end_line":1934,"end_character":42},"updated":"2017-12-20 09:53:58.000000000","message":"The log is never going to get called if placed after the raise","commit_id":"33a000895a3ca67659b34405ee1c4f64960f5fd5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"82651a5a2e58a9262f15b22b4834750de126652a","unresolved":false,"context_lines":[{"line_number":1926,"context_line":"            LOG.info(\u0027Skipping quiescing instance: %(reason)s.\u0027,"},{"line_number":1927,"context_line":"                     {\u0027reason\u0027: err}, instance\u003dinstance)"},{"line_number":1928,"context_line":"        except NotImplementedError:"},{"line_number":1929,"context_line":"            if self._requires_quiesce(image_meta):"},{"line_number":1930,"context_line":"                raise NotImplementedError(_(\u0027_set_quiesced is not implemented \u0027"},{"line_number":1931,"context_line":"                                            \u0027by this guest instance.\u0027))"},{"line_number":1932,"context_line":"                LOG.warning(\u0027Skipping quiescing instance: _set_quiesced is \u0027"},{"line_number":1933,"context_line":"                        \u0027not implemented by this guest instance.\u0027,"},{"line_number":1934,"context_line":"                        instance\u003dinstance)"},{"line_number":1935,"context_line":""},{"line_number":1936,"context_line":"        try:"},{"line_number":1937,"context_line":"            # NOTE (rmk): blockRebase cannot be executed on persistent"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_587f4ade","line":1934,"range":{"start_line":1929,"start_character":0,"end_line":1934,"end_character":42},"updated":"2017-12-20 09:53:58.000000000","message":"This seems counter-intuitive. If the instance _requires_ quiescing, shouldn\u0027t we fail harder than this?","commit_id":"33a000895a3ca67659b34405ee1c4f64960f5fd5"},{"author":{"_account_id":19944,"name":"Chen Hanxiao","email":"chen_han_xiao@126.com","username":"chenhanxiao"},"change_message_id":"368a12f9b5c72a735587f0b728669228fe0a98e2","unresolved":false,"context_lines":[{"line_number":1926,"context_line":"            LOG.info(\u0027Skipping quiescing instance: %(reason)s.\u0027,"},{"line_number":1927,"context_line":"                     {\u0027reason\u0027: err}, instance\u003dinstance)"},{"line_number":1928,"context_line":"        except NotImplementedError:"},{"line_number":1929,"context_line":"            if self._requires_quiesce(image_meta):"},{"line_number":1930,"context_line":"                raise NotImplementedError(_(\u0027_set_quiesced is not implemented \u0027"},{"line_number":1931,"context_line":"                                            \u0027by this guest instance.\u0027))"},{"line_number":1932,"context_line":"                LOG.warning(\u0027Skipping quiescing instance: _set_quiesced is \u0027"},{"line_number":1933,"context_line":"                        \u0027not implemented by this guest instance.\u0027,"},{"line_number":1934,"context_line":"                        instance\u003dinstance)"},{"line_number":1935,"context_line":""},{"line_number":1936,"context_line":"        try:"},{"line_number":1937,"context_line":"            # NOTE (rmk): blockRebase cannot be executed on persistent"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf8cb3f7_b8bddf69","line":1934,"range":{"start_line":1929,"start_character":0,"end_line":1934,"end_character":42},"in_reply_to":"df87a7cf_587f4ade","updated":"2017-12-21 06:07:30.000000000","message":"Done","commit_id":"33a000895a3ca67659b34405ee1c4f64960f5fd5"},{"author":{"_account_id":19944,"name":"Chen Hanxiao","email":"chen_han_xiao@126.com","username":"chenhanxiao"},"change_message_id":"368a12f9b5c72a735587f0b728669228fe0a98e2","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"            if self._requires_quiesce(image_meta):"},{"line_number":1930,"context_line":"                raise NotImplementedError(_(\u0027_set_quiesced is not implemented \u0027"},{"line_number":1931,"context_line":"                                            \u0027by this guest instance.\u0027))"},{"line_number":1932,"context_line":"                LOG.warning(\u0027Skipping quiescing instance: _set_quiesced is \u0027"},{"line_number":1933,"context_line":"                        \u0027not implemented by this guest instance.\u0027,"},{"line_number":1934,"context_line":"                        instance\u003dinstance)"},{"line_number":1935,"context_line":""},{"line_number":1936,"context_line":"        try:"},{"line_number":1937,"context_line":"            # NOTE (rmk): blockRebase cannot be executed on persistent"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf8cb3f7_d8c223ea","line":1934,"range":{"start_line":1932,"start_character":0,"end_line":1934,"end_character":42},"in_reply_to":"df87a7cf_f86f3e25","updated":"2017-12-21 06:07:30.000000000","message":"Done","commit_id":"33a000895a3ca67659b34405ee1c4f64960f5fd5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"66da8bb5b20ce5bc19feda8828e501e39526cb13","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":1865,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":1866,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_AGENT_UNRESPONSIVE:"},{"line_number":1867,"context_line":"                LOG.debug(\u0027Failed to %{method} instance: \u0027"},{"line_number":1868,"context_line":"                        \u0027QEMU agent unresponsive\u0027,"},{"line_number":1869,"context_line":"                        {\u0027method\u0027: \"quiesce\" if quiesced else \"unquiesce\"},"},{"line_number":1870,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":1871,"context_line":"                raise NotImplementedError()"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(ex)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf8cb3f7_4cae552f","line":1870,"range":{"start_line":1867,"start_character":16,"end_line":1870,"end_character":52},"updated":"2017-12-21 08:03:29.000000000","message":"we can print some debug info but no need to report NotImpelentError","commit_id":"967be6902519e101540c935634dfdd654b40a11f"},{"author":{"_account_id":19944,"name":"Chen Hanxiao","email":"chen_han_xiao@126.com","username":"chenhanxiao"},"change_message_id":"25bbbfc050451c60b7398e80a84227dd2182199d","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":1865,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":1866,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_AGENT_UNRESPONSIVE:"},{"line_number":1867,"context_line":"                LOG.debug(\u0027Failed to %{method} instance: \u0027"},{"line_number":1868,"context_line":"                        \u0027QEMU agent unresponsive\u0027,"},{"line_number":1869,"context_line":"                        {\u0027method\u0027: \"quiesce\" if quiesced else \"unquiesce\"},"},{"line_number":1870,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":1871,"context_line":"                raise NotImplementedError()"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(ex)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf8cb3f7_e762e2d8","line":1870,"range":{"start_line":1867,"start_character":16,"end_line":1870,"end_character":52},"in_reply_to":"bf8cb3f7_4cae552f","updated":"2017-12-21 08:18:37.000000000","message":"https://github.com/openstack/nova/blob/master/nova/compute/api.py#L2764\nBut we already expect this","commit_id":"967be6902519e101540c935634dfdd654b40a11f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"ed1784524df53a92e36d56ba1173197a7df5cb51","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":1865,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":1866,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_AGENT_UNRESPONSIVE:"},{"line_number":1867,"context_line":"                LOG.debug(\u0027Failed to %{method} instance: \u0027"},{"line_number":1868,"context_line":"                        \u0027QEMU agent unresponsive\u0027,"},{"line_number":1869,"context_line":"                        {\u0027method\u0027: \"quiesce\" if quiesced else \"unquiesce\"},"},{"line_number":1870,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":1871,"context_line":"                raise NotImplementedError()"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(ex)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf8cb3f7_bc262cb7","line":1870,"range":{"start_line":1867,"start_character":16,"end_line":1870,"end_character":52},"in_reply_to":"bf8cb3f7_b95b9e2c","updated":"2017-12-21 09:56:10.000000000","message":"Yes, the explain of call and cast from Hanxiao is right,\nand some more commit history plus as below:\n\nThe commit history in here: https://review.openstack.org/#/c/138795\n\nI noticed that the unquience change call to cast in PS5 and PS6:\nhttps://review.openstack.org/#/c/138795/5..6/nova/compute/rpcapi.py\nand some comments on https://review.openstack.org/#/c/138795/5/nova/compute/api.py@2235\n\nAccording history comments, the reason of \"use cast for unquience\": it adds _wait_for_snapshots_completion operation on unquience method in PS6, it will cause the rpc timeout before snapshot finished if we use call rpc.","commit_id":"967be6902519e101540c935634dfdd654b40a11f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"730ff7066788ac1089d16bf028ddf02de3ccfa56","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":1865,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":1866,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_AGENT_UNRESPONSIVE:"},{"line_number":1867,"context_line":"                LOG.debug(\u0027Failed to %{method} instance: \u0027"},{"line_number":1868,"context_line":"                        \u0027QEMU agent unresponsive\u0027,"},{"line_number":1869,"context_line":"                        {\u0027method\u0027: \"quiesce\" if quiesced else \"unquiesce\"},"},{"line_number":1870,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":1871,"context_line":"                raise NotImplementedError()"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(ex)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf8cb3f7_e7d98222","line":1870,"range":{"start_line":1867,"start_character":16,"end_line":1870,"end_character":52},"in_reply_to":"bf8cb3f7_e762e2d8","updated":"2017-12-21 08:42:26.000000000","message":"https://github.com/openstack/nova/blob/master/nova/compute/rpcapi.py#L1136\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/rpcapi.py#L1146\n\na little bit weird no idea why quiesce use call and unquiesce use cast, please note even if you catch Notimplement at api layer, if it\u0027s a cast call, you will NEVER get the exception as the message just send without wait","commit_id":"967be6902519e101540c935634dfdd654b40a11f"},{"author":{"_account_id":19944,"name":"Chen Hanxiao","email":"chen_han_xiao@126.com","username":"chenhanxiao"},"change_message_id":"d3b3eccd62be5f2f2697efc694ea678150b103cb","unresolved":false,"context_lines":[{"line_number":1864,"context_line":"        except libvirt.libvirtError as ex:"},{"line_number":1865,"context_line":"            error_code \u003d ex.get_error_code()"},{"line_number":1866,"context_line":"            if error_code \u003d\u003d libvirt.VIR_ERR_AGENT_UNRESPONSIVE:"},{"line_number":1867,"context_line":"                LOG.debug(\u0027Failed to %{method} instance: \u0027"},{"line_number":1868,"context_line":"                        \u0027QEMU agent unresponsive\u0027,"},{"line_number":1869,"context_line":"                        {\u0027method\u0027: \"quiesce\" if quiesced else \"unquiesce\"},"},{"line_number":1870,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":1871,"context_line":"                raise NotImplementedError()"},{"line_number":1872,"context_line":""},{"line_number":1873,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(ex)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf8cb3f7_b95b9e2c","line":1870,"range":{"start_line":1867,"start_character":16,"end_line":1870,"end_character":52},"in_reply_to":"bf8cb3f7_e7d98222","updated":"2017-12-21 09:11:57.000000000","message":"call method for quiesce_instance because we have to wait for its result to proceed the next step. All exceptions should be carefully covered.\nBut unquiesce is a bit complex, for we can\u0027t exactly know whether a fs is unfrozen or not, qga just issue ioctls and try it best.\nSo no need to wait for unquiesce, as well as that exception.\nThe NotImplementedError is mainly for quiesce case, unluckily, unquisce is written in the same function, looks weird...","commit_id":"967be6902519e101540c935634dfdd654b40a11f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"66da8bb5b20ce5bc19feda8828e501e39526cb13","unresolved":false,"context_lines":[{"line_number":1925,"context_line":"                raise"},{"line_number":1926,"context_line":"            LOG.info(\u0027Skipping quiescing instance: %(reason)s.\u0027,"},{"line_number":1927,"context_line":"                     {\u0027reason\u0027: err}, instance\u003dinstance)"},{"line_number":1928,"context_line":"        except NotImplementedError:"},{"line_number":1929,"context_line":"            if self._requires_quiesce(image_meta):"},{"line_number":1930,"context_line":"                raise"},{"line_number":1931,"context_line":"            LOG.info(\u0027Skipping quiescing instance: _set_quiesced is \u0027"},{"line_number":1932,"context_line":"                    \u0027not implemented by this guest instance.\u0027,"},{"line_number":1933,"context_line":"                    instance\u003dinstance)"},{"line_number":1934,"context_line":""},{"line_number":1935,"context_line":"        try:"},{"line_number":1936,"context_line":"            # NOTE (rmk): blockRebase cannot be executed on persistent"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf8cb3f7_8cbc5d6a","line":1933,"range":{"start_line":1928,"start_character":8,"end_line":1933,"end_character":38},"updated":"2017-12-21 08:03:29.000000000","message":"I don\u0027t think this is necessary....as above catch can print enough info to know what happened","commit_id":"967be6902519e101540c935634dfdd654b40a11f"}]}
