)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"980a74716b4c67e72fe2ab656d921169f6c24dee","unresolved":false,"context_lines":[{"line_number":17,"context_line":"placement."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] Iec33e656491848b26686fbf6fb5db4a4c94b9ea8"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I65a7ee565ca5b3ec6c33a2fd9e39d461f7d90ed2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_1b33ffc5","line":20,"updated":"2018-11-08 14:32:52.000000000","message":"Related/Partial/Closes-Bug: #1742467 ?\n\nIf this means I can set resource_provider_association_refresh\u003d0 and compute will stop pulling provider aggregates on every periodic, then I think this (well really the config change for min\u003d0) closes that bug.","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f1845f17502a92fcc2ca01a93335a70a4d72c36c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"placement."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] Iec33e656491848b26686fbf6fb5db4a4c94b9ea8"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I65a7ee565ca5b3ec6c33a2fd9e39d461f7d90ed2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_73bd77b0","line":20,"in_reply_to":"3f79a3b5_1b33ffc5","updated":"2018-11-08 16:16:53.000000000","message":"\u003e Related/Partial/Closes-Bug: #1742467 ?\n \u003e \n \u003e If this means I can set resource_provider_association_refresh\u003d0 and\n \u003e compute will stop pulling provider aggregates on every periodic,\n \u003e then I think this (well really the config change for min\u003d0) closes\n \u003e that bug.\n\nProbably the patch that introduced resource_provider_association_refresh should have been marked as closing that bug. This series is a further optimization, I guess.\n\nBut actually I think the real benefit comes a couple patches up, as you\u0027ve noted. I\u0027ll mark that one.","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"}],"nova/compute/manager.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6e90a116f7b8492ee6110948c760f80e79753750","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        LOG.info(\u0027Reloading compute RPC API\u0027)"},{"line_number":549,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"},{"line_number":550,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":551,"context_line":"        self._get_resource_tracker().reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def _get_resource_tracker(self):"},{"line_number":554,"context_line":"        if not self._resource_tracker:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_2fa2f2fa","line":551,"range":{"start_line":551,"start_character":13,"end_line":551,"end_character":49},"updated":"2018-11-29 19:56:34.000000000","message":"as discussed in another patch, you can consolidate this to just having a reportclient attribute set up once in the manager (in a fup patch of course).","commit_id":"ec044885ff2c44202cc62cf85149b7993d4d0221"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"db16ba6948914b79c8d173bf426493a999f9799b","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        LOG.info(\u0027Reloading compute RPC API\u0027)"},{"line_number":549,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"},{"line_number":550,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":551,"context_line":"        self._get_resource_tracker().reportclient.clear_provider_cache()"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def _get_resource_tracker(self):"},{"line_number":554,"context_line":"        if not self._resource_tracker:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_c071c4ac","line":551,"range":{"start_line":551,"start_character":13,"end_line":551,"end_character":49},"in_reply_to":"3f79a3b5_2fa2f2fa","updated":"2018-11-29 21:45:10.000000000","message":"Done in https://review.openstack.org/#/c/620711/ at the top of this series.","commit_id":"ec044885ff2c44202cc62cf85149b7993d4d0221"}],"nova/conf/compute.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b4aae99e170cc6a21627a313b273127038d32176","unresolved":false,"context_lines":[{"line_number":663,"context_line":"A value of zero disables cache refresh completely."},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"The cache can be refreshed manually at any time by sending SIGHUP to the"},{"line_number":666,"context_line":"compute process."},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"Possible values:"},{"line_number":669,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8f112afc","line":666,"range":{"start_line":666,"start_character":7,"end_line":666,"end_character":8},"updated":"2018-11-07 11:59:42.000000000","message":"just curious, a compute node need a manual SIGHUP to refresh cache seems weird... lack of background :(","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98fd1d06cb596750b8afe779ddebc7659a0111d8","unresolved":false,"context_lines":[{"line_number":663,"context_line":"A value of zero disables cache refresh completely."},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"The cache can be refreshed manually at any time by sending SIGHUP to the"},{"line_number":666,"context_line":"compute process."},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"Possible values:"},{"line_number":669,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_1ec78612","line":666,"range":{"start_line":666,"start_character":7,"end_line":666,"end_character":8},"in_reply_to":"3f79a3b5_8f112afc","updated":"2018-11-07 15:54:23.000000000","message":"Agree, this whole conf option relies on that background.","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"a7c11155a074e3da0034fd5b9b249510c3678bc2","unresolved":false,"context_lines":[{"line_number":653,"context_line":"        min\u003d0,"},{"line_number":654,"context_line":"        mutable\u003dTrue,"},{"line_number":655,"context_line":"        # TODO(efried): Provide more/better explanation of what this option is"},{"line_number":656,"context_line":"        # all about. Reference bug(s). Unless we\u0027re just going to remove it."},{"line_number":657,"context_line":"        help\u003d\"\"\""},{"line_number":658,"context_line":"Interval for updating nova-compute-side cache of the compute node resource"},{"line_number":659,"context_line":"provider\u0027s aggregates and traits info."}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_24f57052","line":656,"updated":"2018-11-09 02:21:32.000000000","message":"Okay, it is reasonable to have just TODO here for now.","commit_id":"ee34f58b1ce62dd1e2fc0f750801347ce96776c0"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"23f3a5c3835e16fa5a98400a6ce1dc4dc060cd91","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def clear_provider_cache(self):"},{"line_number":277,"context_line":"        LOG.info(\"Clearing the report client\u0027s provider cache.\")"},{"line_number":278,"context_line":"        self._provider_tree \u003d provider_tree.ProviderTree()"},{"line_number":279,"context_line":"        self._association_refresh_time \u003d {}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    @utils.synchronized(PLACEMENT_CLIENT_SEMAPHORE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2495b73e","line":278,"updated":"2018-11-06 10:58:34.000000000","message":"(thinking out loud)\n\nIf the existing ProviderTree is being operated on in a greenthread and is holding the lock, that\u0027s no biggie because that entire ProviderTree will go out of scope when any references to it do, so there ought not be any issues there.\n\n(I\u0027m not even certain if we have potential for that situation, now)","commit_id":"514eaaef12dad2460fd4c2fffdc05a3db0490711"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"cd9fa34ceeab2cca96ee6a53f279e520f4d549b2","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    def clear_provider_cache(self):"},{"line_number":277,"context_line":"        LOG.info(\"Clearing the report client\u0027s provider cache.\")"},{"line_number":278,"context_line":"        self._provider_tree \u003d provider_tree.ProviderTree()"},{"line_number":279,"context_line":"        self._association_refresh_time \u003d {}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    @utils.synchronized(PLACEMENT_CLIENT_SEMAPHORE)"},{"line_number":282,"context_line":"    def _create_client(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_531bde1b","line":279,"range":{"start_line":279,"start_character":8,"end_line":279,"end_character":43},"updated":"2018-11-21 14:14:14.000000000","message":"note to self: \n\n1) we clear this refresh_time cache for all nodes as well so that after the SIGHUP, the `refresh_time` would be zero (https://github.com/openstack/nova/blob/7217e38bafb75e8a613763835b64e48e6b2c8ece/nova/scheduler/client/report.py#L858) and we would hence load the RPT cache like on startup, on the first periodic update.\n\n2) we could also just do a force refresh here: https://github.com/openstack/nova/blob/7217e38bafb75e8a613763835b64e48e6b2c8ece/nova/scheduler/client/report.py#L768 maybe but that code path doesn\u0027t do an explicit inventory refresh which is why it isn\u0027t very useful here and also because we clear the whole tree, probably makes sense to load the tree freshly and refresh everything.\n\n3) need to check how the SIGHUP of ironic compute would look like for all the underlying rp\u0027s at the same time (since in rocky starting up doesn\u0027t bring the service up so probably same effect).","commit_id":"2b97e508381e7f1efe48799ee3d9b068b4fd5902"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d70bfa1f5fcd624227d0e743a1aa06db45af29e8","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    def clear_provider_cache(self):"},{"line_number":277,"context_line":"        LOG.info(\"Clearing the report client\u0027s provider cache.\")"},{"line_number":278,"context_line":"        self._provider_tree \u003d provider_tree.ProviderTree()"},{"line_number":279,"context_line":"        self._association_refresh_time \u003d {}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    @utils.synchronized(PLACEMENT_CLIENT_SEMAPHORE)"},{"line_number":282,"context_line":"    def _create_client(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_ebe9d281","line":279,"range":{"start_line":279,"start_character":8,"end_line":279,"end_character":43},"in_reply_to":"3f79a3b5_531bde1b","updated":"2018-11-21 16:34:15.000000000","message":"\u003e 2) we could also just do a force refresh here: https://github.com/openstack/nova/blob/7217e38bafb75e8a613763835b64e48e6b2c8ece/nova/scheduler/client/report.py#L768\n \u003e maybe but that code path doesn\u0027t do an explicit inventory refresh\n \u003e which is why it isn\u0027t very useful here and also because we clear\n \u003e the whole tree, probably makes sense to load the tree freshly and\n \u003e refresh everything.\n\nRight, but also see my response in the reno: that would reload the data right away, and something might change between then and when we next use it.\n\n \u003e 3) need to check how the SIGHUP of ironic compute would look like\n \u003e for all the underlying rp\u0027s at the same time (since in rocky\n \u003e starting up doesn\u0027t bring the service up so probably same effect).\n\nOh, yeah. I am always confused and have to relearn every time how the multiple compute nodes are represented for ironic. I *think* they\u0027re all being managed in the same process, and therefore in the same ProviderTree, and therefore the SIGHUP will correctly clear out all of them at the same time. [Later] Yeah, that appears to be the case. So I think we\u0027re good here - please let me know if you find otherwise.","commit_id":"2b97e508381e7f1efe48799ee3d9b068b4fd5902"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77d66845e5614356dc14cf30747ef2fa3c25a9b9","unresolved":false,"context_lines":[{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        # At this point, the whole tree exists in the local cache."},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        for rp_to_refresh in rps_to_refresh:"},{"line_number":702,"context_line":"            # NOTE(efried): _refresh_associations doesn\u0027t refresh inventory"},{"line_number":703,"context_line":"            # (yet) - see that method\u0027s docstring for the why."},{"line_number":704,"context_line":"            self._refresh_and_get_inventory(context, rp_to_refresh[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_67155895","line":701,"updated":"2018-11-30 15:26:49.000000000","message":"And here we\u0027ll do our refresh dance.","commit_id":"bbc2fcb8fb20dde1b81597c319392afb5b2c53fe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77d66845e5614356dc14cf30747ef2fa3c25a9b9","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"        # some point this should be refactored, and this method can *just*"},{"line_number":1031,"context_line":"        # return a deep copy of the local _provider_tree cache."},{"line_number":1032,"context_line":"        # (Re)populate the local ProviderTree"},{"line_number":1033,"context_line":"        self._ensure_resource_provider("},{"line_number":1034,"context_line":"            context, rp_uuid, name\u003dname,"},{"line_number":1035,"context_line":"            parent_provider_uuid\u003dparent_provider_uuid)"},{"line_number":1036,"context_line":"        # Ensure inventories are up to date (for *all* cached RPs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_070b447f","line":1033,"updated":"2018-11-30 15:26:49.000000000","message":"OK on the next periodic we call this.","commit_id":"bbc2fcb8fb20dde1b81597c319392afb5b2c53fe"}],"releasenotes/notes/disable-rt-cache-refresh-9f6633e585516760.yaml":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"63b8d4ae543d1921fe20981e84a4368429384706","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The configuration option"},{"line_number":5,"context_line":"    ``[compute]resource_provider_association_refresh`` can now"},{"line_number":6,"context_line":"    be set to zero to disable refresh entirely. This follows on from `bug"},{"line_number":7,"context_line":"    1767309`_ allowing more aggressive reduction in the amount of traffic to"},{"line_number":8,"context_line":"    the placement service."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f79a3b5_55ff0dfe","line":6,"range":{"start_line":6,"start_character":30,"end_line":6,"end_character":37},"updated":"2018-11-08 07:15:26.000000000","message":"I would add some words here to explain what to refresh...","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f1845f17502a92fcc2ca01a93335a70a4d72c36c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The configuration option"},{"line_number":5,"context_line":"    ``[compute]resource_provider_association_refresh`` can now"},{"line_number":6,"context_line":"    be set to zero to disable refresh entirely. This follows on from `bug"},{"line_number":7,"context_line":"    1767309`_ allowing more aggressive reduction in the amount of traffic to"},{"line_number":8,"context_line":"    the placement service."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f79a3b5_33105fab","line":6,"range":{"start_line":6,"start_character":30,"end_line":6,"end_character":37},"in_reply_to":"3f79a3b5_55ff0dfe","updated":"2018-11-08 16:16:53.000000000","message":"IMO that\u0027s not really in scope here. I agree some work is warranted explaining in more detail what the conf option is really all about. But that should be done in the option help itself rather than in the reno. And (again IMO) is something that should have been done separately. I also don\u0027t really want to spend too much time on it considering that we may very well be deciding to do away with refresh entirely, removing the conf option and any configurability.\n\nHow about I add a TODO on the conf option, so we can figure out the right course of action later?","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"63b8d4ae543d1921fe20981e84a4368429384706","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    1767309`_ allowing more aggressive reduction in the amount of traffic to"},{"line_number":8,"context_line":"    the placement service."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    The cache can be refreshed manually at any time by sending SIGHUP to the"},{"line_number":11,"context_line":"    compute process."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`bug 1767309`: https://bugs.launchpad.net/nova/+bug/1767309"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f79a3b5_7a0f9837","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":13},"updated":"2018-11-08 07:15:26.000000000","message":"... because I\u0027m not sure which cache it indicates from this reno document.","commit_id":"fb33dcfb92809255787f23463ceaf1496579c270"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"cd9fa34ceeab2cca96ee6a53f279e520f4d549b2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    1767309`_ allowing more aggressive reduction in the amount of traffic to"},{"line_number":8,"context_line":"    the placement service."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    The cache can be refreshed manually at any time by sending SIGHUP to the"},{"line_number":11,"context_line":"    compute process."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`bug 1767309`: https://bugs.launchpad.net/nova/+bug/1767309"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_53d43ebc","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":19},"updated":"2018-11-21 14:14:14.000000000","message":"the SIGHUP would trigger periodic update task (which would do the fresh) after CONF.update_resources_interval and not immediately as mentioned in the commit message.","commit_id":"2b97e508381e7f1efe48799ee3d9b068b4fd5902"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d70bfa1f5fcd624227d0e743a1aa06db45af29e8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    1767309`_ allowing more aggressive reduction in the amount of traffic to"},{"line_number":8,"context_line":"    the placement service."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    The cache can be refreshed manually at any time by sending SIGHUP to the"},{"line_number":11,"context_line":"    compute process."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`bug 1767309`: https://bugs.launchpad.net/nova/+bug/1767309"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_abdc3a16","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":19},"in_reply_to":"3f79a3b5_53d43ebc","updated":"2018-11-21 16:34:15.000000000","message":"Yes, that\u0027s technically correct, but the effect is the same: the next time we go to use the cache, we get new data.\n\nI suppose there\u0027s an edge case where those two things aren\u0027t the same: if something changes in placement between SIGHUP and the next periodic interval. In that scenario, the code as written does the better thing, which is deferring the retrieval of the information until right before it\u0027s going to be used.\n\nTo make this statement more technically correct I suppose I could s/refreshed/cleared/","commit_id":"2b97e508381e7f1efe48799ee3d9b068b4fd5902"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6d9794726c59564fb2201730fc2c1f2ef18eabba","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    1767309`_ allowing more aggressive reduction in the amount of traffic to"},{"line_number":8,"context_line":"    the placement service."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    The cache can be refreshed manually at any time by sending SIGHUP to the"},{"line_number":11,"context_line":"    compute process."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`bug 1767309`: https://bugs.launchpad.net/nova/+bug/1767309"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_c4282a37","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":19},"in_reply_to":"3f79a3b5_abdc3a16","updated":"2018-11-27 20:49:24.000000000","message":"\u003e To make this statement more technically correct I suppose I could\n \u003e s/refreshed/cleared/\n\nDone","commit_id":"2b97e508381e7f1efe48799ee3d9b068b4fd5902"}]}
