)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"31fc5664bebf662a19e2f9aa6476ac5d96bbd55a","unresolved":true,"context_lines":[{"line_number":30,"context_line":"HashRing events."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Related-Bug: #1894117"},{"line_number":33,"context_line":"Closes-Bug: #1903008"},{"line_number":34,"context_line":"Change-Id: Ia198d45f49bddda549a0e70a3374b8339f88887b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"0f5dff90_63a0a73a","line":33,"updated":"2020-12-21 11:50:13.000000000","message":"according to irc discussion, it is not going to close that bug","commit_id":"e2dd53a796bb2cac7d5d4dbc5d57d8b56086c89d"}],"neutron/common/ovn/hash_ring_manager.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1684d7043cde056f6d281dbf0f2e939ca77cc459","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            self.admin_ctx,"},{"line_number":57,"context_line":"            constants.HASH_RING_CACHE_TIMEOUT, self._group, from_host\u003dTrue)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if len(nodes) \u003e\u003d api_workers:"},{"line_number":60,"context_line":"            LOG.debug(\"Allow caching, nodes %s\u003e\u003d%s\", len(nodes), api_workers)"},{"line_number":61,"context_line":"            self._check_hashring_startup \u003d False"},{"line_number":62,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":9,"id":"30e099e5_6bcc94da","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":37},"updated":"2020-12-17 09:02:29.000000000","message":"I have a question here: why the number of active nodes must be the same as the number of API workers?\n\nAPI workers is a configurable parameter. The active nodes are the active hosts running an OVN instance. Why this number should match?\n\nSorry, I\u0027m missing something in this logic.","commit_id":"796f902689520e312852d8ccf4221eda1a6a022b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"95a3aa7b1f726c0d67dd4d613151507ace063eeb","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            self.admin_ctx,"},{"line_number":57,"context_line":"            constants.HASH_RING_CACHE_TIMEOUT, self._group, from_host\u003dTrue)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if len(nodes) \u003e\u003d api_workers:"},{"line_number":60,"context_line":"            LOG.debug(\"Allow caching, nodes %s\u003e\u003d%s\", len(nodes), api_workers)"},{"line_number":61,"context_line":"            self._check_hashring_startup \u003d False"},{"line_number":62,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":9,"id":"0aad2fa5_1bf47904","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":37},"in_reply_to":"30e099e5_6bcc94da","updated":"2020-12-17 09:23:29.000000000","message":"Daniel answered me this question via IRC. Thanks! The active nodes are the host hash ring workers.","commit_id":"796f902689520e312852d8ccf4221eda1a6a022b"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"4a84a66a6cbe79b308ed7a66c10770f1652c81d0","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            self.admin_ctx,"},{"line_number":57,"context_line":"            constants.HASH_RING_CACHE_TIMEOUT, self._group, from_host\u003dTrue)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if len(nodes) \u003e\u003d api_workers:"},{"line_number":60,"context_line":"            LOG.debug(\"Allow caching, nodes %s\u003e\u003d%s\", len(nodes), api_workers)"},{"line_number":61,"context_line":"            self._check_hashring_startup \u003d False"},{"line_number":62,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":9,"id":"d1af46d7_4edb6d1e","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":37},"in_reply_to":"30e099e5_6bcc94da","updated":"2020-12-17 09:13:07.000000000","message":"I think that your confusion comes from the (maybe a bit unfortunate) naming of \u0027get_active_nodes\u0027. If you see, the \u0027from_host\u003dTrue\u0027 parameter is actually turning that function into \u0027get_active_workers\u0027 for the particular node this function runs on.\n\nSo this logic is to allow caching only when there are more hash ring workers than actual API nodes in this particular node. That\u0027s how I understand it :)","commit_id":"796f902689520e312852d8ccf4221eda1a6a022b"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"63486d73347fe699f255cc3e84e43477d012e7dc","unresolved":true,"context_lines":[{"line_number":265,"context_line":"        self._ovn_client_inst \u003d None"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        worker_class \u003d ovn_utils.get_method_class(trigger)"},{"line_number":268,"context_line":"        if worker_class \u003d\u003d neutron.wsgi.WorkerService:"},{"line_number":269,"context_line":"            admin_context \u003d n_context.get_admin_context()"},{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"241e4440_fce51c85","line":268,"range":{"start_line":268,"start_character":8,"end_line":268,"end_character":53},"updated":"2020-12-07 23:08:21.000000000","message":"Like we talked offline, this changes the semantics a little bit,\nfrom \"not is_maintenance\" to \"wokerService\". It may be a good idea\nto put a comment in here on why?","commit_id":"39dac639eea2f45c32e10cea40f88d32287b3cd0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"20132d75643d33d32e110ef3b734180a379ad2ff","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ace14eba_a4b11e12","line":273,"range":{"start_line":273,"start_character":8,"end_line":273,"end_character":77},"updated":"2020-12-08 09:52:13.000000000","message":"Maybe not for this patch but something to keep in mind since we are talking about workers here.\n\nI wonder if we want to create this connections (or run the code in this post_fork method at all) if the worker is !\u003d Maintenance or API Worker. I don\u0027t see how the connection will be used as it won\u0027t process any requests from the API or OVSDB events now.","commit_id":"39dac639eea2f45c32e10cea40f88d32287b3cd0"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"75268d54d863642b8aed01895b315902413e60eb","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a476c6a_7434fc8b","line":273,"range":{"start_line":273,"start_character":63,"end_line":273,"end_character":76},"updated":"2020-12-07 23:25:44.000000000","message":"word of caution when back-porting this code. In earlier releases (stable branches),\nthe is_maintenance variable was also used in impl_idl_ovn.get_ovn_idls()","commit_id":"39dac639eea2f45c32e10cea40f88d32287b3cd0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"20132d75643d33d32e110ef3b734180a379ad2ff","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"b6733083_e61488a4","line":273,"range":{"start_line":273,"start_character":63,"end_line":273,"end_character":76},"in_reply_to":"9a476c6a_7434fc8b","updated":"2020-12-08 09:52:13.000000000","message":"I agree.","commit_id":"39dac639eea2f45c32e10cea40f88d32287b3cd0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e6ed8ad267b3b38964ef69ef4cbec3bd42f4d42e","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"994893bd_f87fdcb3","line":273,"updated":"2020-12-08 14:26:23.000000000","message":"(re-adding the comment)\n\nI wonder if we want to create these connections (or run the code in this post_fork method at all) if the worker is !\u003d Maintenance or API Worker. I don\u0027t see how the connection will be used as it won\u0027t process any requests from the API or OVSDB events now.\n\nMaybe unrelated to this patch, what u think ?","commit_id":"5f4e0d8b76d7573e36c245f5569371ccf1a75c5d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"5ba5fe30c81df3a9cd761ebcd2ea05041aceaf7d","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"855ceb91_da87c1f5","line":273,"in_reply_to":"306dccfc_8df7ec72","updated":"2020-12-09 10:34:57.000000000","message":"Sorry I should have been more specific.\n\nI mean the other type of workers, for example: RPC workers.\n\nFor these type of workers we will still create connections to the OVSDB (IDL instances) but, due to the change in the semantics in this patch to only add the node to the Hash Ring in case they are API workers (instead of !\u003d Maintenance as before) those worker will no longer process OVSDB events. They also do not process API requests cause they are not API workers (obviously).\n\nSo I was wondering if we should just skip this whole post_fork_initialize() method if the worker is not an API or Maintenance instance.","commit_id":"5f4e0d8b76d7573e36c245f5569371ccf1a75c5d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5e1187280b4a16d5f70f8dd056318b090b966aaa","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d32872b_be3f708c","line":273,"in_reply_to":"5214adb0_2fb8693a","updated":"2020-12-10 14:31:42.000000000","message":"s/thread/process/","commit_id":"5f4e0d8b76d7573e36c245f5569371ccf1a75c5d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e835714c3066d22a6d01b629d4640ab63da4d1ad","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"b5df4b9d_7026f9f9","line":273,"in_reply_to":"6d32872b_be3f708c","updated":"2020-12-10 14:33:14.000000000","message":"Yeah I think we do not need to do anything for RPC workers. Hence my comment here, I think we could check the worker type at the beginning of the post_fork method and if it\u0027s neither API or Maintenance, we could just return.\n\n/me haven\u0027t tested it tho","commit_id":"5f4e0d8b76d7573e36c245f5569371ccf1a75c5d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"3e4e6889b46a9edf059003c752a0a159857dc0e6","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5214adb0_2fb8693a","line":273,"in_reply_to":"855ceb91_da87c1f5","updated":"2020-12-10 14:30:07.000000000","message":"For RPC workers it seems like we should (do we do *anything* for RPC worker?) I\u0027m a little fuzzy on the AllServiceWorker thread.","commit_id":"5f4e0d8b76d7573e36c245f5569371ccf1a75c5d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c5541f1d3f4efa45c10f897009f6b095e36ebf5c","unresolved":true,"context_lines":[{"line_number":270,"context_line":"            self.node_uuid \u003d ovn_hash_ring_db.add_node(admin_context,"},{"line_number":271,"context_line":"                                                       self.hash_ring_group)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        self._nb_ovn, self._sb_ovn \u003d impl_idl_ovn.get_ovn_idls(self, trigger)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self._sb_ovn.is_table_present(\u0027Chassis_Private\u0027):"},{"line_number":276,"context_line":"            self.agent_chassis_table \u003d \u0027Chassis_Private\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"306dccfc_8df7ec72","line":273,"in_reply_to":"994893bd_f87fdcb3","updated":"2020-12-08 15:45:16.000000000","message":"I don\u0027t understand this comment. API workers will process the OVSDB events and they will process the API requests, right? And maintenance worker needs to access the OVN DBs because it\u0027ll fix the inconsistencies.","commit_id":"5f4e0d8b76d7573e36c245f5569371ccf1a75c5d"}],"neutron/tests/functional/base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"69b71e55ebef70c7f5fe3021b348a4b502804a7d","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        ovn_conf.cfg.CONF.set_override(\u0027dns_servers\u0027,"},{"line_number":175,"context_line":"                                       [\u002710.10.10.10\u0027],"},{"line_number":176,"context_line":"                                       group\u003d\u0027ovn\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        self.addCleanup(exts.PluginAwareExtensionManager.clear_instance)"},{"line_number":179,"context_line":"        super(TestOVNFunctionalBase, self).setUp()"},{"line_number":180,"context_line":"        self.test_log_dir \u003d os.path.join(DEFAULT_LOG_DIR, self.id())"}],"source_content_type":"text/x-python","patch_set":1,"id":"51b7111a_3fd0ce91","line":177,"updated":"2020-12-08 10:28:00.000000000","message":"We need to set the api_workers count to 1 here to use the cache in all functional tests inheriting from this class. We also need to register the opt first by importing service module.\n\n     from neutron import service  # noqa\n\n     ...\n\n     ovn_conf.cfg.CONF.set_override(\u0027api_workers\u0027, 1)","commit_id":"39dac639eea2f45c32e10cea40f88d32287b3cd0"},{"author":{"_account_id":11952,"name":"Flavio Fernandes","email":"flavio@flaviof.com","username":"ffernand"},"change_message_id":"47e56ac634c80a69c7fb0aee53096350e07ce807","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        ovn_conf.cfg.CONF.set_override(\u0027dns_servers\u0027,"},{"line_number":175,"context_line":"                                       [\u002710.10.10.10\u0027],"},{"line_number":176,"context_line":"                                       group\u003d\u0027ovn\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        self.addCleanup(exts.PluginAwareExtensionManager.clear_instance)"},{"line_number":179,"context_line":"        super(TestOVNFunctionalBase, self).setUp()"},{"line_number":180,"context_line":"        self.test_log_dir \u003d os.path.join(DEFAULT_LOG_DIR, self.id())"}],"source_content_type":"text/x-python","patch_set":1,"id":"58911902_2bf169c3","line":177,"in_reply_to":"51b7111a_3fd0ce91","updated":"2020-12-08 11:04:05.000000000","message":"Ack","commit_id":"39dac639eea2f45c32e10cea40f88d32287b3cd0"}]}
