)]}'
{"networking_ovn/agent/metadata/agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2d867705c76e6f80281b753272e422fc51154690","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK, external\u003dTrue)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_829760ec","line":438,"updated":"2019-05-31 13:28:55.000000000","message":"Why does this need to be external?  Isn\u0027t this just a race between threads in the agent?","commit_id":"8eb6f1f144b3288b07116e0ce8738cedae994aad"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6ec64113f1486bcc4bf676073d3037a1eec07653","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK, external\u003dTrue)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_9b98f26a","line":438,"in_reply_to":"9fb8cfa7_3bbc6604","updated":"2019-06-04 12:24:15.000000000","message":"Great findings, thanks for explanation.","commit_id":"8eb6f1f144b3288b07116e0ce8738cedae994aad"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"994afeb81e72728e9cf1dc4e8bf6f158e16c7859","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK, external\u003dTrue)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_fd0fdd33","line":438,"in_reply_to":"bfb3d3c7_423968ef","updated":"2019-05-31 14:09:13.000000000","message":"Yeah, we have multiple processes being spawned by the agent at https://github.com/openstack/networking-ovn/blob/6e909e252d8f10b2d9c9aeba49a31850962cef1d/networking_ovn/agent/metadata/server.py#L180-L187","commit_id":"8eb6f1f144b3288b07116e0ce8738cedae994aad"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"976d80aa6a94e23a9816592e0d23f36f8e05f618","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK, external\u003dTrue)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_423968ef","line":438,"in_reply_to":"bfb3d3c7_829760ec","updated":"2019-05-31 13:33:35.000000000","message":"ovn metadata agent is multiprocessed","commit_id":"8eb6f1f144b3288b07116e0ce8738cedae994aad"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"438836b3b3568f9a8db7c66593ab25031e160deb","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK, external\u003dTrue)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_3bbc6604","line":438,"in_reply_to":"bfb3d3c7_fd0fdd33","updated":"2019-06-04 12:17:23.000000000","message":"Hi,\n\n@Jakub, @Brian. I did some investigation on this because I was puzzled about why it worked for me in the lab without adding the external\u003dTrue flag (my original test).\n\nIt turns out that, even do we do have multiple workers being spawned at [0] the SBDB IDL that those workers instantiate are not handling any events [1] (which is fine they do not need it).\n\nThere\u0027s only one SB IDL instantiated at agent.py start() method which will actually handle the events [2] (see SortBindingChassisEvent, ChassisCreateEvent, SbGlobalUpdateEvent). Therefore we have only that handler and the external\u003dTrue is not really needed in our case.\n\n[0] https://github.com/openstack/networking-ovn/blob/66d192012c46c417b48462fe9437c9f20f7599e7/networking_ovn/agent/metadata/server.py#L180-L187\n\n[1] https://github.com/openstack/networking-ovn/blob/66d192012c46c417b48462fe9437c9f20f7599e7/networking_ovn/agent/metadata/server.py#L56-L59\n\n[2] https://github.com/openstack/networking-ovn/blob/66d192012c46c417b48462fe9437c9f20f7599e7/networking_ovn/agent/metadata/agent.py#L179-L182","commit_id":"8eb6f1f144b3288b07116e0ce8738cedae994aad"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"132b49dd0afbe39adb3d3335598708460b89bd5e","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_dbb74ad8","line":438,"updated":"2019-06-04 12:26:29.000000000","message":"super-duper-trooper-nit: Do you think it would be worth to keep a comment about that handling ovsdb events is done by a single process.? I can imagine myself in a year from now wondering, why we do not have external\u003dTrue here :)","commit_id":"a1ec7d8ff6e3eb5978536d01973f47caffe3b39d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d92434c7ae567de8cf9d36d6751ef1a09fb90831","unresolved":false,"context_lines":[{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        return namespaces"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    @lockutils.synchronized(CHASSIS_METADATA_LOCK)"},{"line_number":439,"context_line":"    def update_chassis_metadata_networks(self, datapath, remove\u003dFalse):"},{"line_number":440,"context_line":"        \"\"\"Update metadata networks hosted in this chassis."},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_9bd0f2cb","line":438,"in_reply_to":"9fb8cfa7_dbb74ad8","updated":"2019-06-04 12:37:56.000000000","message":"lol that\u0027s a fair point. I can do that","commit_id":"a1ec7d8ff6e3eb5978536d01973f47caffe3b39d"}],"networking_ovn/ml2/mech_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"438836b3b3568f9a8db7c66593ab25031e160deb","unresolved":false,"context_lines":[{"line_number":909,"context_line":"                # provisioning block though."},{"line_number":910,"context_line":"                LOG.error(\"Metadata service is not ready for port %s, check\""},{"line_number":911,"context_line":"                          \" networking-ovn-metadata-agent status/logs.\","},{"line_number":912,"context_line":"                          port_id)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def agent_alive(self, chassis, type_):"},{"line_number":915,"context_line":"        nb_cfg \u003d chassis.nb_cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_5bf83ac3","line":912,"updated":"2019-06-04 12:17:23.000000000","message":"Also, talking to @Daniel Alvarez about this log. We\u0027ve agreed to keep it as warning because in theory, even if the UUID is not in the list (which will time out eventually) things should still work.\n\nSo in the next patch-set I will be reverting this file change here.","commit_id":"8eb6f1f144b3288b07116e0ce8738cedae994aad"}]}
