)]}'
{"nova/scheduler/host_manager.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"36e0e7e7c8d236cfe473508930d4c205064e4571","unresolved":false,"context_lines":[{"line_number":489,"context_line":"            # We force to update the aggregates info each time a new request"},{"line_number":490,"context_line":"            # comes in, because some changes on the aggregates could have been"},{"line_number":491,"context_line":"            # happening after setting this field for the first time"},{"line_number":492,"context_line":"            host_state.aggregates \u003d [self.aggs_by_id[agg_id] for agg_id in"},{"line_number":493,"context_line":"                                     self.host_aggregates_map["},{"line_number":494,"context_line":"                                         host_state.host].copy()]"},{"line_number":495,"context_line":"            host_state.update_service(dict(service.iteritems()))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_ac7ed416","line":492,"updated":"2015-03-10 12:12:58.000000000","message":"maybe we also need locking for the updates/removal","commit_id":"64ab26e0cb74e91edebee66341fdd045690d64f2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"901b322b0ba26f6f9c8d5a6c5174f4f5fbbe9229","unresolved":false,"context_lines":[{"line_number":489,"context_line":"            # We force to update the aggregates info each time a new request"},{"line_number":490,"context_line":"            # comes in, because some changes on the aggregates could have been"},{"line_number":491,"context_line":"            # happening after setting this field for the first time"},{"line_number":492,"context_line":"            host_state.aggregates \u003d [self.aggs_by_id[agg_id] for agg_id in"},{"line_number":493,"context_line":"                                     self.host_aggregates_map["},{"line_number":494,"context_line":"                                         host_state.host].copy()]"},{"line_number":495,"context_line":"            host_state.update_service(dict(service.iteritems()))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_e3e6f6e7","line":492,"in_reply_to":"9a80dd14_ac7ed416","updated":"2015-03-11 02:43:25.000000000","message":"I\u0027m not sure we need locking for updates/removal. The operation of dict is thread-safe.","commit_id":"64ab26e0cb74e91edebee66341fdd045690d64f2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bfab858bd91c17e5a94dea7537dd1805b94f1ba2","unresolved":false,"context_lines":[{"line_number":489,"context_line":"            # We force to update the aggregates info each time a new request"},{"line_number":490,"context_line":"            # comes in, because some changes on the aggregates could have been"},{"line_number":491,"context_line":"            # happening after setting this field for the first time"},{"line_number":492,"context_line":"            host_state.aggregates \u003d [self.aggs_by_id[agg_id] for agg_id in"},{"line_number":493,"context_line":"                                     self.host_aggregates_map["},{"line_number":494,"context_line":"                                         host_state.host].copy()]"},{"line_number":495,"context_line":"            host_state.update_service(dict(service.iteritems()))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_8f78f4f9","line":492,"in_reply_to":"9a80dd14_e3e6f6e7","updated":"2015-03-11 09:06:54.000000000","message":"We don\u0027t need a locking system for updates/removals because it updates the HostManager, not the HostState.\n\nSo, each time a new query is going in, it will take the current status of host_aggregates_map even if it\u0027s going to change, because the .copy() method does this.","commit_id":"64ab26e0cb74e91edebee66341fdd045690d64f2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"c04b141136c3b648d7b82af78f847b8935fe8054","unresolved":false,"context_lines":[{"line_number":491,"context_line":"            # happening after setting this field for the first time"},{"line_number":492,"context_line":"            host_state.aggregates \u003d [self.aggs_by_id[agg_id] for agg_id in"},{"line_number":493,"context_line":"                                     self.host_aggregates_map["},{"line_number":494,"context_line":"                                         host_state.host].copy()]"},{"line_number":495,"context_line":"            host_state.update_service(dict(service.iteritems()))"},{"line_number":496,"context_line":"            seen_nodes.add(state_key)"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_a7a361fe","line":494,"updated":"2015-03-16 09:40:41.000000000","message":"a simple copy looks enough here.","commit_id":"be20df9c519f8cae37fbff4671a2107469b3c2e1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3d25c71447dfe736e6293a899fafc04e6084829b","unresolved":false,"context_lines":[{"line_number":491,"context_line":"            # happening after setting this field for the first time"},{"line_number":492,"context_line":"            host_state.aggregates \u003d [self.aggs_by_id[agg_id] for agg_id in"},{"line_number":493,"context_line":"                                     self.host_aggregates_map["},{"line_number":494,"context_line":"                                         host_state.host].copy()]"},{"line_number":495,"context_line":"            host_state.update_service(dict(service.iteritems()))"},{"line_number":496,"context_line":"            seen_nodes.add(state_key)"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6ced46_65269d6a","line":494,"in_reply_to":"9a80dd14_3aa6b60f","updated":"2015-03-23 01:32:16.000000000","message":"@Dan, you are not missing something. I think you are right. It won\u0027t be changed with eventlet backend.","commit_id":"be20df9c519f8cae37fbff4671a2107469b3c2e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b5e43b41a3b09be93a3458df0ba4ecabbafd64d1","unresolved":false,"context_lines":[{"line_number":491,"context_line":"            # happening after setting this field for the first time"},{"line_number":492,"context_line":"            host_state.aggregates \u003d [self.aggs_by_id[agg_id] for agg_id in"},{"line_number":493,"context_line":"                                     self.host_aggregates_map["},{"line_number":494,"context_line":"                                         host_state.host].copy()]"},{"line_number":495,"context_line":"            host_state.update_service(dict(service.iteritems()))"},{"line_number":496,"context_line":"            seen_nodes.add(state_key)"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_3aa6b60f","line":494,"in_reply_to":"9a80dd14_a7a361fe","updated":"2015-03-20 14:01:09.000000000","message":"I must be missing something here. We\u0027re iterating self.host_aggregates_map and building a new list. Where in this single-line statement can self.host_aggregates_map change underneath us?","commit_id":"be20df9c519f8cae37fbff4671a2107469b3c2e1"}]}
