)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2ddf8090afa0cc1295363dbdf9a290f56c2a7a58","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Custom filters/weighers will still be able to lazy-load fields"},{"line_number":19,"context_line":"on the Instance objects in HostState.instances if needed, but"},{"line_number":20,"context_line":"it will mean a performance penalty due to the round trip to the"},{"line_number":21,"context_line":"database per instance, per host. Out of tree filters/weighers"},{"line_number":22,"context_line":"are encouraged to be contributed upstream."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Related to blueprint put-host-manager-instance-info-on-a-diet"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_b501336d","line":22,"range":{"start_line":21,"start_character":33,"end_line":22,"end_character":42},"updated":"2018-06-06 17:59:28.000000000","message":"lol. :)","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e309046e50001546c681f8e5b19fe853f4cc271b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Custom filters/weighers will still be able to lazy-load fields"},{"line_number":19,"context_line":"on the Instance objects in HostState.instances if needed, but"},{"line_number":20,"context_line":"it will mean a performance penalty due to the round trip to the"},{"line_number":21,"context_line":"database per instance, per host. Out of tree filters/weighers"},{"line_number":22,"context_line":"are encouraged to be contributed upstream."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Related to blueprint put-host-manager-instance-info-on-a-diet"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_af07d217","line":22,"range":{"start_line":21,"start_character":33,"end_line":22,"end_character":42},"in_reply_to":"5f7c97a3_b501336d","updated":"2018-07-23 16:17:04.000000000","message":"even if they were contributed in tree would we change this if it was a significat performance regressions in the general case for a singel optional filter?\n\ni guess we could optimise it to pull back the fields need for that filter too but still keep the dataset small.","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"}],"nova/conf/workarounds.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"296645a32eb365c4ae7926a401fe9d8b42ce723f","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    cfg.BoolOpt("},{"line_number":152,"context_line":"        \u0027i_am_a_bad_person\u0027,"},{"line_number":153,"context_line":"        default\u003dFalse,"},{"line_number":154,"context_line":"        help\u003d\"\"\""},{"line_number":155,"context_line":"Set this to True if you have out of tree scheduler filters that rely on"},{"line_number":156,"context_line":"the HostState.instances dict have real Instance objects as the values."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_80b6658a","line":153,"range":{"start_line":153,"start_character":16,"end_line":153,"end_character":21},"updated":"2018-05-17 20:21:01.000000000","message":"Shouldn\u0027t the default be True, to preserve current behaviour, regardless of how unfortunate said behaviour is?","commit_id":"89bab503685aff9668d254a9afa5026285e80263"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"08884c0a7cb4e755e80d864ccb9d30770d6c1769","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    cfg.BoolOpt("},{"line_number":152,"context_line":"        \u0027i_am_a_bad_person\u0027,"},{"line_number":153,"context_line":"        default\u003dFalse,"},{"line_number":154,"context_line":"        help\u003d\"\"\""},{"line_number":155,"context_line":"Set this to True if you have out of tree scheduler filters that rely on"},{"line_number":156,"context_line":"the HostState.instances dict have real Instance objects as the values."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_bbfdd409","line":153,"range":{"start_line":153,"start_character":16,"end_line":153,"end_character":21},"in_reply_to":"5f7c97a3_80b6658a","updated":"2018-05-17 20:23:26.000000000","message":"I think it would be okay to change the default behaviour as long as we document it in a release note.\n\nIt only affects people with out-of-tree filters, and they should be extra-careful with upgrades anyway.","commit_id":"89bab503685aff9668d254a9afa5026285e80263"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b4da072b42b5c38f0022a60de46576594a22a3cb","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        default\u003dFalse,"},{"line_number":154,"context_line":"        help\u003d\"\"\""},{"line_number":155,"context_line":"Set this to True if you have out of tree scheduler filters that rely on"},{"line_number":156,"context_line":"the HostState.instances dict have real Instance objects as the values."},{"line_number":157,"context_line":"\"\"\""},{"line_number":158,"context_line":"    ),"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a01121af","line":156,"range":{"start_line":156,"start_character":29,"end_line":156,"end_character":33},"updated":"2018-05-17 20:15:57.000000000","message":"having","commit_id":"89bab503685aff9668d254a9afa5026285e80263"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"573d286ab92b3acc6a746242b309a3d8b6261259","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        default\u003dFalse,"},{"line_number":154,"context_line":"        help\u003d\"\"\""},{"line_number":155,"context_line":"Set this to True if you have out of tree scheduler filters that rely on"},{"line_number":156,"context_line":"the HostState.instances dict have real Instance objects as the values."},{"line_number":157,"context_line":"\"\"\""},{"line_number":158,"context_line":"    ),"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_a05fe170","line":156,"range":{"start_line":156,"start_character":29,"end_line":156,"end_character":33},"updated":"2018-05-17 20:16:04.000000000","message":"having","commit_id":"89bab503685aff9668d254a9afa5026285e80263"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"573d286ab92b3acc6a746242b309a3d8b6261259","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        help\u003d\"\"\""},{"line_number":155,"context_line":"Set this to True if you have out of tree scheduler filters that rely on"},{"line_number":156,"context_line":"the HostState.instances dict have real Instance objects as the values."},{"line_number":157,"context_line":"\"\"\""},{"line_number":158,"context_line":"    ),"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    cfg.BoolOpt("}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_c0c53d0c","line":157,"updated":"2018-05-17 20:16:04.000000000","message":"Add:\n\nRelated options:\n\n* [filter_scheduler]/track_instance_changes","commit_id":"89bab503685aff9668d254a9afa5026285e80263"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a6fbc0cf9552e2b9cf85b4ba9047ea29e8dcb98","unresolved":false,"context_lines":[{"line_number":162,"context_line":"instance uuids from the database per host, and the HostState.instances"},{"line_number":163,"context_line":"values will not provide the full Instance object to filters/weighers."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"When False, Instance object fields can be lazy-loaded on an Instance from"},{"line_number":166,"context_line":"a filter but it will result in a performance penalty per instance."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Related options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_391a2b17","line":165,"updated":"2018-05-17 23:36:16.000000000","message":"Given https://review.openstack.org/#/c/569268/ we could potentially not even have this workaround option because out of tree filters / weighers can still function on the Instance object but they\u0027ll get the performance hit of lazy-loading fields. Should we do that? If we did, should we add this workaround option for a release, default to True (for backward compatibility) but deprecate it for removal in Stein? Then people upgrading to Rocky with out of tree filters that require this will not get a hit immediately in Rocky but can be warned that it\u0027s coming and they need to adjust.","commit_id":"9fbef0825548471ed522790cf82068fdef02fc37"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc6fd8eb7d1eb518915c7b13e7bf8194e4669c62","unresolved":false,"context_lines":[{"line_number":162,"context_line":"instance uuids from the database per host, and the HostState.instances"},{"line_number":163,"context_line":"values will not provide the full Instance object to filters/weighers."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"When False, Instance object fields can be lazy-loaded on an Instance from"},{"line_number":166,"context_line":"a filter but it will result in a performance penalty per instance."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Related options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_e9e5a6dd","line":165,"in_reply_to":"5f7c97a3_0dcb57a5","updated":"2018-05-19 14:41:32.000000000","message":"No idea, and the people that probably are the most are the least involved in upstream activity / two-way communication.","commit_id":"9fbef0825548471ed522790cf82068fdef02fc37"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31bb6a3dd40d651442ea9f566daa88d681cf0e37","unresolved":false,"context_lines":[{"line_number":162,"context_line":"instance uuids from the database per host, and the HostState.instances"},{"line_number":163,"context_line":"values will not provide the full Instance object to filters/weighers."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"When False, Instance object fields can be lazy-loaded on an Instance from"},{"line_number":166,"context_line":"a filter but it will result in a performance penalty per instance."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Related options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_0dcb57a5","line":165,"in_reply_to":"5f7c97a3_161851d1","updated":"2018-05-18 17:58:14.000000000","message":"Do we have any idea how many providers are running their own out-of-tree filters with a stock nova codebase?   If they\u0027re already patching nova it\u0027d be fairly trivial to just revert this change to avoid the performance hit.","commit_id":"9fbef0825548471ed522790cf82068fdef02fc37"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"170fa0ec99b3ea6c993a689e9aae9abb5a3f1aca","unresolved":false,"context_lines":[{"line_number":162,"context_line":"instance uuids from the database per host, and the HostState.instances"},{"line_number":163,"context_line":"values will not provide the full Instance object to filters/weighers."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"When False, Instance object fields can be lazy-loaded on an Instance from"},{"line_number":166,"context_line":"a filter but it will result in a performance penalty per instance."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Related options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_161851d1","line":165,"in_reply_to":"5f7c97a3_36530de5","updated":"2018-05-18 13:47:02.000000000","message":"Yeah I\u0027m waiting to gauge reaction in the mailing list.","commit_id":"9fbef0825548471ed522790cf82068fdef02fc37"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"243fce74b9a3b37c25ed9537cdea85c9b0ffe90c","unresolved":false,"context_lines":[{"line_number":162,"context_line":"instance uuids from the database per host, and the HostState.instances"},{"line_number":163,"context_line":"values will not provide the full Instance object to filters/weighers."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"When False, Instance object fields can be lazy-loaded on an Instance from"},{"line_number":166,"context_line":"a filter but it will result in a performance penalty per instance."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Related options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_36530de5","line":165,"in_reply_to":"5f7c97a3_391a2b17","updated":"2018-05-18 13:32:35.000000000","message":"I definitely think we should not add this (it\u0027s why I wrote it). If we do, at _least_ deprecate for removal immediately.","commit_id":"9fbef0825548471ed522790cf82068fdef02fc37"}],"nova/scheduler/host_manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a6fbc0cf9552e2b9cf85b4ba9047ea29e8dcb98","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                     \u0027instance info for this host.\u0027, host_name)"},{"line_number":751,"context_line":"            return {}"},{"line_number":752,"context_line":"        with context_module.target_cell(context, hm.cell_mapping) as cctxt:"},{"line_number":753,"context_line":"            if CONF.workarounds.full_host_state_instances:"},{"line_number":754,"context_line":"                # NOTE(mriedem): We pass expected_attrs\u003d[] to avoid a default"},{"line_number":755,"context_line":"                # join on info_cache and security_groups, which at present none"},{"line_number":756,"context_line":"                # of the in-tree filters/weighers rely on that information. Any"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_19d72f26","line":753,"updated":"2018-05-17 23:36:16.000000000","message":"If True, should we log a warning (at least once per restart of the nova-scheduler worker)?","commit_id":"9fbef0825548471ed522790cf82068fdef02fc37"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2ddf8090afa0cc1295363dbdf9a290f56c2a7a58","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                     \u0027instance info for this host.\u0027, host_name)"},{"line_number":751,"context_line":"            return {}"},{"line_number":752,"context_line":"        with context_module.target_cell(context, hm.cell_mapping) as cctxt:"},{"line_number":753,"context_line":"            uuids \u003d objects.InstanceList.get_uuids_by_host(cctxt, host_name)"},{"line_number":754,"context_line":"            # Putting the context in the otherwise fake Instance object at"},{"line_number":755,"context_line":"            # least allows out of tree filters to lazy-load fields."},{"line_number":756,"context_line":"            return {uuid: objects.Instance(cctxt, uuid\u003duuid) for uuid in uuids}"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_d512afb4","line":753,"range":{"start_line":753,"start_character":20,"end_line":753,"end_character":59},"updated":"2018-06-06 17:59:28.000000000","message":"Seems a little odd to not return an InstanceList object from InstanceList.get_uuids_by_host(), but I see there\u0027s a bunch of these kinds of methods on InstanceList, so ok :)","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"927e2d7990f4662b838a47db09c7ad1601ffcbf0","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                     \u0027instance info for this host.\u0027, host_name)"},{"line_number":751,"context_line":"            return {}"},{"line_number":752,"context_line":"        with context_module.target_cell(context, hm.cell_mapping) as cctxt:"},{"line_number":753,"context_line":"            uuids \u003d objects.InstanceList.get_uuids_by_host(cctxt, host_name)"},{"line_number":754,"context_line":"            # Putting the context in the otherwise fake Instance object at"},{"line_number":755,"context_line":"            # least allows out of tree filters to lazy-load fields."},{"line_number":756,"context_line":"            return {uuid: objects.Instance(cctxt, uuid\u003duuid) for uuid in uuids}"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_d3097d29","line":753,"range":{"start_line":753,"start_character":20,"end_line":753,"end_character":59},"in_reply_to":"5f7c97a3_8f69b6c1","updated":"2018-07-24 16:56:54.000000000","message":"I think Jay\u0027s point is that InstanceList classmethods are kinda assumed to build and return an InstanceList in most cases. However, we\u0027ve got many examples of this sort of thing returning data types other than the class where the classmethod is. In an ideal world, they\u0027d always match up, but in practice, these sorts of methods end up saving us a lot of work.","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e309046e50001546c681f8e5b19fe853f4cc271b","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                     \u0027instance info for this host.\u0027, host_name)"},{"line_number":751,"context_line":"            return {}"},{"line_number":752,"context_line":"        with context_module.target_cell(context, hm.cell_mapping) as cctxt:"},{"line_number":753,"context_line":"            uuids \u003d objects.InstanceList.get_uuids_by_host(cctxt, host_name)"},{"line_number":754,"context_line":"            # Putting the context in the otherwise fake Instance object at"},{"line_number":755,"context_line":"            # least allows out of tree filters to lazy-load fields."},{"line_number":756,"context_line":"            return {uuid: objects.Instance(cctxt, uuid\u003duuid) for uuid in uuids}"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_8f69b6c1","line":753,"range":{"start_line":753,"start_character":20,"end_line":753,"end_character":59},"in_reply_to":"5f7c97a3_d512afb4","updated":"2018-07-23 16:17:04.000000000","message":"well that would change the datatype returned by _get_instances_by_host form a list of instance objects to a list of uuids  where as this is backwards compatible with existing caller code.","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"}],"releasenotes/notes/full_host_state_instances-6fbc828564a000ec.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"034b0dded4cb9d6493a8c427ac3a74ee1ed65c61","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    the ``HostState.instances`` dict to contain full Instance objects will"},{"line_number":6,"context_line":"    now hit a performance penalty because the Instance values in that dict"},{"line_number":7,"context_line":"    are no longer fully populated objects. The in-tree filters that do rely"},{"line_number":8,"context_line":"    on ``HostState.instances`` only care about the (1) uuids of the instances"},{"line_number":9,"context_line":"    per host, which is the keys in the dict and (2) the number of instances"},{"line_number":10,"context_line":"    per host, which can be determined via ``len(host_state.instances)``."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5f7c97a3_ebc9075a","line":8,"range":{"start_line":8,"start_character":47,"end_line":8,"end_character":54},"updated":"2018-06-06 19:59:26.000000000","message":"(1) the","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"034b0dded4cb9d6493a8c427ac3a74ee1ed65c61","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    now hit a performance penalty because the Instance values in that dict"},{"line_number":7,"context_line":"    are no longer fully populated objects. The in-tree filters that do rely"},{"line_number":8,"context_line":"    on ``HostState.instances`` only care about the (1) uuids of the instances"},{"line_number":9,"context_line":"    per host, which is the keys in the dict and (2) the number of instances"},{"line_number":10,"context_line":"    per host, which can be determined via ``len(host_state.instances)``."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    Custom scheduler filters and weighers should continue to function since"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5f7c97a3_0bc5633d","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":22},"updated":"2018-06-06 19:59:26.000000000","message":"are","commit_id":"91f5af7ee7f7140eafb7237875f6cd6ea1abcd38"}]}
