)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b2cbda0b3aa34cf62294deaabba2767ab635c027","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Parse the numa topology from the new flavor when resize instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When resize the instance, the new flavor may includes new instance"},{"line_number":10,"context_line":"topology request. Currently, the resize doesn\u0027t parse those from"},{"line_number":11,"context_line":"the new flavor."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch adds the parsing of the numa topology request from the"},{"line_number":14,"context_line":"instance image metadata and new flavor. Then update the new numa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9fdfeff1_80fcbbb5","line":11,"range":{"start_line":10,"start_character":18,"end_line":11,"end_character":15},"updated":"2019-02-22 21:50:35.000000000","message":"I think the question is what impact does this have? For example, the MoveClaim during the resize will calculate the requested numa topology from the (new) flavor here:\n\nhttps://github.com/openstack/nova/blob/f58cdcd58dc555b5b8635907987510f4970eae58/nova/compute/claims.py#L294\n\nI think the issue might be that when we go through the scheduler, the NUMATopologyFilter is working off the numa topology from the current (old) flavor rather than the new flavor during the resize:\n\nhttps://github.com/openstack/nova/blob/f58cdcd58dc555b5b8635907987510f4970eae58/nova/scheduler/filters/numa_topology_filter.py#L74\n\nSo the scheduler could incorrectly select a host which will fail during the resize_claim and trigger a reschedule.","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"},{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"8452e2b048a0b8cc8d3dc24216ca4aa0200c4520","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Parse the numa topology from the new flavor when resize instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When resize the instance, the new flavor may includes new instance"},{"line_number":10,"context_line":"topology request. Currently, the resize doesn\u0027t parse those from"},{"line_number":11,"context_line":"the new flavor."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch adds the parsing of the numa topology request from the"},{"line_number":14,"context_line":"instance image metadata and new flavor. Then update the new numa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9fdfeff1_e0334761","line":11,"range":{"start_line":10,"start_character":18,"end_line":11,"end_character":15},"in_reply_to":"9fdfeff1_80fcbbb5","updated":"2019-02-22 22:11:51.000000000","message":"I think that\u0027s exactly what happens. The scheduler may try to assign the instance to the wrong host.","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd2abc272aa54a4a90aef9a44030ee116bc75018","unresolved":false,"context_lines":[{"line_number":851,"context_line":"                exception.FlavorNotFound,"},{"line_number":852,"context_line":"                exception.NoValidHost,"},{"line_number":853,"context_line":"                exception.PciRequestAliasNotDefined,"},{"line_number":854,"context_line":"                exception.CPUThreadPolicyConfigurationInvalid,"},{"line_number":855,"context_line":"                exception.ImageCPUPinningForbidden,"},{"line_number":856,"context_line":"                exception.ImageCPUThreadPolicyForbidden,"},{"line_number":857,"context_line":"                exception.ImageNUMATopologyIncomplete,"},{"line_number":858,"context_line":"                exception.ImageNUMATopologyForbidden,"},{"line_number":859,"context_line":"                exception.ImageNUMATopologyAsymmetric,"},{"line_number":860,"context_line":"                exception.ImageNUMATopologyCPUOutOfRange,"},{"line_number":861,"context_line":"                exception.ImageNUMATopologyCPUDuplicates,"},{"line_number":862,"context_line":"                exception.ImageNUMATopologyCPUsUnassigned,"},{"line_number":863,"context_line":"                exception.ImageNUMATopologyMemoryOutOfRange,"},{"line_number":864,"context_line":"                exception.InvalidNUMANodesNumber,"},{"line_number":865,"context_line":"                exception.MemoryPageSizeInvalid,"},{"line_number":866,"context_line":"                exception.MemoryPageSizeForbidden,"},{"line_number":867,"context_line":"                exception.RealtimeConfigurationInvalid,"},{"line_number":868,"context_line":"                exception.RealtimeMaskNotFoundOrInvalid) as e:"},{"line_number":869,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":870,"context_line":"        except exception.Invalid:"},{"line_number":871,"context_line":"            msg \u003d _(\"Invalid instance image.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_bbbeddad","line":868,"range":{"start_line":854,"start_character":16,"end_line":868,"end_character":56},"updated":"2018-12-04 22:59:33.000000000","message":"oh wow...","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aa8321e5808d9dce54af87cb2a318f08dc354d0b","unresolved":false,"context_lines":[{"line_number":851,"context_line":"                exception.FlavorNotFound,"},{"line_number":852,"context_line":"                exception.NoValidHost,"},{"line_number":853,"context_line":"                exception.PciRequestAliasNotDefined,"},{"line_number":854,"context_line":"                exception.CPUThreadPolicyConfigurationInvalid,"},{"line_number":855,"context_line":"                exception.ImageCPUPinningForbidden,"},{"line_number":856,"context_line":"                exception.ImageCPUThreadPolicyForbidden,"},{"line_number":857,"context_line":"                exception.ImageNUMATopologyIncomplete,"},{"line_number":858,"context_line":"                exception.ImageNUMATopologyForbidden,"},{"line_number":859,"context_line":"                exception.ImageNUMATopologyAsymmetric,"},{"line_number":860,"context_line":"                exception.ImageNUMATopologyCPUOutOfRange,"},{"line_number":861,"context_line":"                exception.ImageNUMATopologyCPUDuplicates,"},{"line_number":862,"context_line":"                exception.ImageNUMATopologyCPUsUnassigned,"},{"line_number":863,"context_line":"                exception.ImageNUMATopologyMemoryOutOfRange,"},{"line_number":864,"context_line":"                exception.InvalidNUMANodesNumber,"},{"line_number":865,"context_line":"                exception.MemoryPageSizeInvalid,"},{"line_number":866,"context_line":"                exception.MemoryPageSizeForbidden,"},{"line_number":867,"context_line":"                exception.RealtimeConfigurationInvalid,"},{"line_number":868,"context_line":"                exception.RealtimeMaskNotFoundOrInvalid) as e:"},{"line_number":869,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":870,"context_line":"        except exception.Invalid:"},{"line_number":871,"context_line":"            msg \u003d _(\"Invalid instance image.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_906c0106","line":868,"range":{"start_line":854,"start_character":16,"end_line":868,"end_character":56},"in_reply_to":"3f79a3b5_5c4c5c96","updated":"2018-12-05 20:59:22.000000000","message":"Heh yeah, I don\u0027t have great ideas on how to make this simpler though, or to build a common list that is copied from somewhere else. Did you just look at the docstring/code to figure out what could be raised from that hardware module method?","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d961dc5da0fa96d3eb59512110db088006eda5b1","unresolved":false,"context_lines":[{"line_number":851,"context_line":"                exception.FlavorNotFound,"},{"line_number":852,"context_line":"                exception.NoValidHost,"},{"line_number":853,"context_line":"                exception.PciRequestAliasNotDefined,"},{"line_number":854,"context_line":"                exception.CPUThreadPolicyConfigurationInvalid,"},{"line_number":855,"context_line":"                exception.ImageCPUPinningForbidden,"},{"line_number":856,"context_line":"                exception.ImageCPUThreadPolicyForbidden,"},{"line_number":857,"context_line":"                exception.ImageNUMATopologyIncomplete,"},{"line_number":858,"context_line":"                exception.ImageNUMATopologyForbidden,"},{"line_number":859,"context_line":"                exception.ImageNUMATopologyAsymmetric,"},{"line_number":860,"context_line":"                exception.ImageNUMATopologyCPUOutOfRange,"},{"line_number":861,"context_line":"                exception.ImageNUMATopologyCPUDuplicates,"},{"line_number":862,"context_line":"                exception.ImageNUMATopologyCPUsUnassigned,"},{"line_number":863,"context_line":"                exception.ImageNUMATopologyMemoryOutOfRange,"},{"line_number":864,"context_line":"                exception.InvalidNUMANodesNumber,"},{"line_number":865,"context_line":"                exception.MemoryPageSizeInvalid,"},{"line_number":866,"context_line":"                exception.MemoryPageSizeForbidden,"},{"line_number":867,"context_line":"                exception.RealtimeConfigurationInvalid,"},{"line_number":868,"context_line":"                exception.RealtimeMaskNotFoundOrInvalid) as e:"},{"line_number":869,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":870,"context_line":"        except exception.Invalid:"},{"line_number":871,"context_line":"            msg \u003d _(\"Invalid instance image.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_5c4c5c96","line":868,"range":{"start_line":854,"start_character":16,"end_line":868,"end_character":56},"in_reply_to":"3f79a3b5_bbbeddad","updated":"2018-12-05 04:33:44.000000000","message":"This is terrible.","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"}],"nova/compute/api.py":[{"author":{"_account_id":23598,"name":"Zhong Luyao","email":"luyao.zhong@intel.com","username":"ZhongLuyao"},"change_message_id":"529071573e81ad92e3aeb62bfec576938c8a99ec","unresolved":false,"context_lines":[{"line_number":3503,"context_line":"        if not CONF.allow_resize_to_same_host:"},{"line_number":3504,"context_line":"            filter_properties[\u0027ignore_hosts\u0027].append(instance.host)"},{"line_number":3505,"context_line":""},{"line_number":3506,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":3507,"context_line":"            utils.get_image_from_system_metadata("},{"line_number":3508,"context_line":"                instance.system_metadata))"},{"line_number":3509,"context_line":"        numa_topology \u003d hardware.numa_get_constraints("},{"line_number":3510,"context_line":"            new_instance_type, image_meta)"},{"line_number":3511,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_21d8b7eb","line":3508,"range":{"start_line":3506,"start_character":21,"end_line":3508,"end_character":42},"updated":"2018-11-30 05:59:09.000000000","message":"why not instance.image_meta","commit_id":"d14172ffe53085019ece29d51ad4a57955849380"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"9a7c371b0ab9b40035074728196087403dd09cea","unresolved":false,"context_lines":[{"line_number":3503,"context_line":"        if not CONF.allow_resize_to_same_host:"},{"line_number":3504,"context_line":"            filter_properties[\u0027ignore_hosts\u0027].append(instance.host)"},{"line_number":3505,"context_line":""},{"line_number":3506,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":3507,"context_line":"            utils.get_image_from_system_metadata("},{"line_number":3508,"context_line":"                instance.system_metadata))"},{"line_number":3509,"context_line":"        numa_topology \u003d hardware.numa_get_constraints("},{"line_number":3510,"context_line":"            new_instance_type, image_meta)"},{"line_number":3511,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_dccd28ba","line":3508,"range":{"start_line":3506,"start_character":21,"end_line":3508,"end_character":42},"in_reply_to":"3f79a3b5_21d8b7eb","updated":"2018-11-30 06:51:49.000000000","message":"I can see that he might just refered to other places, it seems quite the same thing.","commit_id":"d14172ffe53085019ece29d51ad4a57955849380"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d0a704f1bc3909ee3e3646aab746eef6f53eceff","unresolved":false,"context_lines":[{"line_number":3503,"context_line":"        if not CONF.allow_resize_to_same_host:"},{"line_number":3504,"context_line":"            filter_properties[\u0027ignore_hosts\u0027].append(instance.host)"},{"line_number":3505,"context_line":""},{"line_number":3506,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":3507,"context_line":"            utils.get_image_from_system_metadata("},{"line_number":3508,"context_line":"                instance.system_metadata))"},{"line_number":3509,"context_line":"        numa_topology \u003d hardware.numa_get_constraints("},{"line_number":3510,"context_line":"            new_instance_type, image_meta)"},{"line_number":3511,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_92c6b06a","line":3508,"range":{"start_line":3506,"start_character":21,"end_line":3508,"end_character":42},"in_reply_to":"3f79a3b5_dccd28ba","updated":"2018-11-30 15:54:26.000000000","message":"ha, yes, you are right. I just copy from other place. I will update in next version. Thanks for point this out.","commit_id":"d14172ffe53085019ece29d51ad4a57955849380"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd2abc272aa54a4a90aef9a44030ee116bc75018","unresolved":false,"context_lines":[{"line_number":3355,"context_line":"        self._check_quota_for_upsize(context, instance, instance.flavor,"},{"line_number":3356,"context_line":"                                     instance.old_flavor)"},{"line_number":3357,"context_line":""},{"line_number":3358,"context_line":"        # Conductor updated the RequestSpec.flavor during the initial resize"},{"line_number":3359,"context_line":"        # operation to point at the new flavor, so we need to update the"},{"line_number":3360,"context_line":"        # RequestSpec to point back at the original flavor, otherwise"},{"line_number":3361,"context_line":"        # subsequent move operations through the scheduler will be using the"},{"line_number":3362,"context_line":"        # wrong flavor."},{"line_number":3363,"context_line":"        reqspec \u003d objects.RequestSpec.get_by_instance_uuid("},{"line_number":3364,"context_line":"            context, instance.uuid)"},{"line_number":3365,"context_line":"        reqspec.flavor \u003d instance.old_flavor"},{"line_number":3366,"context_line":"        reqspec.save()"},{"line_number":3367,"context_line":""},{"line_number":3368,"context_line":"        instance.task_state \u003d task_states.RESIZE_REVERTING"},{"line_number":3369,"context_line":"        instance.save(expected_task_state\u003d[None])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_7be605de","line":3366,"range":{"start_line":3358,"start_character":8,"end_line":3366,"end_character":22},"updated":"2018-12-04 22:59:33.000000000","message":"You need to handle revert like this as well.","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"11b345269c40b95b3db0ba13ddda8b58f513884a","unresolved":false,"context_lines":[{"line_number":3506,"context_line":"        if same_instance_type:"},{"line_number":3507,"context_line":"            numa_topology \u003d instance.numa_topology"},{"line_number":3508,"context_line":"        else:"},{"line_number":3509,"context_line":"            numa_topology \u003d hardware.numa_get_constraints("},{"line_number":3510,"context_line":"                new_instance_type, instance.image_meta)"},{"line_number":3511,"context_line":""},{"line_number":3512,"context_line":"        request_spec \u003d objects.RequestSpec.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_e0b4a7f4","line":3509,"range":{"start_line":3509,"start_character":37,"end_line":3509,"end_character":57},"updated":"2019-02-22 21:55:07.000000000","message":"This is definitely good because looking at this code, if the flavor and image are in conflict we currently won\u0027t hit that until the resize_claim in the compute, and then we\u0027ll try to reschedule (if there are other hosts) but they\u0027ll just fail the same way, i.e. like this check:\n\nhttps://github.com/openstack/nova/blob/f58cdcd58dc555b5b8635907987510f4970eae58/nova/virt/hardware.py#L1279","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd2abc272aa54a4a90aef9a44030ee116bc75018","unresolved":false,"context_lines":[{"line_number":3512,"context_line":"        request_spec \u003d objects.RequestSpec.get_by_instance_uuid("},{"line_number":3513,"context_line":"            context, instance.uuid)"},{"line_number":3514,"context_line":"        request_spec.ignore_hosts \u003d filter_properties[\u0027ignore_hosts\u0027]"},{"line_number":3515,"context_line":"        request_spec.numa_topology \u003d numa_topology"},{"line_number":3516,"context_line":""},{"line_number":3517,"context_line":"        instance.task_state \u003d task_states.RESIZE_PREP"},{"line_number":3518,"context_line":"        instance.progress \u003d 0"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_fbfa1574","line":3515,"updated":"2018-12-04 22:59:33.000000000","message":"So this will get persisted in conductor here:\n\nhttps://github.com/openstack/nova/blob/5f648dda49a6d5fe5ecfd7dddcb5f7dc3d6b51a6/nova/conductor/manager.py#L356\n\nHowever, if the user reverts the resize, the request spec is going to continue to show the new numa_topology when in fact the instance would be using the old numa_topology (from old_flavor), so you\u0027d need to clean this up on revert.","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d961dc5da0fa96d3eb59512110db088006eda5b1","unresolved":false,"context_lines":[{"line_number":3512,"context_line":"        request_spec \u003d objects.RequestSpec.get_by_instance_uuid("},{"line_number":3513,"context_line":"            context, instance.uuid)"},{"line_number":3514,"context_line":"        request_spec.ignore_hosts \u003d filter_properties[\u0027ignore_hosts\u0027]"},{"line_number":3515,"context_line":"        request_spec.numa_topology \u003d numa_topology"},{"line_number":3516,"context_line":""},{"line_number":3517,"context_line":"        instance.task_state \u003d task_states.RESIZE_PREP"},{"line_number":3518,"context_line":"        instance.progress \u003d 0"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_1c15844b","line":3515,"in_reply_to":"3f79a3b5_fbfa1574","updated":"2018-12-05 04:33:44.000000000","message":"thanks, I will take look at it.","commit_id":"61afc678545e2804d024835396a462d68be5eb8c"}]}
