)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a5e7e9bab330e78a3513381507931b6a0c2772b0","unresolved":true,"context_lines":[{"line_number":18,"context_line":"1) We\u0027ll save writes to OVN SB database which, in highly loaded"},{"line_number":19,"context_line":"systems and at scale reduces significantly the load on ovsdb-server."},{"line_number":20,"context_line":"2) We can make OVN metadata agent to connect to slave instances when"},{"line_number":21,"context_line":"using active-backup OVN databases since writes are not needed"},{"line_number":22,"context_line":"3) There\u0027s a chance that the VM boots very fast and requests."},{"line_number":23,"context_line":"metadata before the service is ready but since the timeout was"},{"line_number":24,"context_line":"15 seconds, we can safely rely on the the cloud-init retries."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a806f76_28ce3264","line":21,"range":{"start_line":21,"start_character":34,"end_line":21,"end_character":61},"updated":"2021-05-19 08:54:19.000000000","message":"Quick question: We still write the agent UUID [0] in the Chassis external_ids, right ? Otherwise how does the metadata shows up as an agent in the \"agent list\" command ?\n\n[0] register_metadata_agent() from agent.py","commit_id":"dd33687e1e494dae449ab6d3a9dc17463d29279c"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"bad94acd51be9675b217747950ef8db42402a283","unresolved":true,"context_lines":[{"line_number":18,"context_line":"1) We\u0027ll save writes to OVN SB database which, in highly loaded"},{"line_number":19,"context_line":"systems and at scale reduces significantly the load on ovsdb-server."},{"line_number":20,"context_line":"2) We can make OVN metadata agent to connect to slave instances when"},{"line_number":21,"context_line":"using active-backup OVN databases since writes are not needed"},{"line_number":22,"context_line":"3) There\u0027s a chance that the VM boots very fast and requests."},{"line_number":23,"context_line":"metadata before the service is ready but since the timeout was"},{"line_number":24,"context_line":"15 seconds, we can safely rely on the the cloud-init retries."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"c40c8059_bc2df07a","line":21,"range":{"start_line":21,"start_character":34,"end_line":21,"end_character":61},"in_reply_to":"9a806f76_28ce3264","updated":"2021-05-19 09:46:55.000000000","message":"Lucas, this is a great point. So far this patch is just taking care of the metadata readiness for the purpose of removing writes that are essential for the normal workflow.\n\nA separate topic (I can add it to the commit message and/or rephrase the bullet point 2) is the healthchecks mechanism that, as you point out, would still write to the SB database. A follow-up patch would probably allow to enable/disable this mechanism but also operators can disable or ignore the health status of the agents in favor of scale/performance.\n\nWith this patch and, making agents to connect to the master SB database, you\u0027ll still get the healthcheck mechanism but you\u0027re reducing significantly the amount of events and writes to SB database, especially under scenarios where a lot of VMs are spawned/destroyed concurrently.\n\nLet me know if this makes sense?","commit_id":"dd33687e1e494dae449ab6d3a9dc17463d29279c"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"469377e25c55785931e8819a23417ee3e6df0b21","unresolved":false,"context_lines":[{"line_number":18,"context_line":"1) We\u0027ll save writes to OVN SB database which, in highly loaded"},{"line_number":19,"context_line":"systems and at scale reduces significantly the load on ovsdb-server."},{"line_number":20,"context_line":"2) We can make OVN metadata agent to connect to slave instances when"},{"line_number":21,"context_line":"using active-backup OVN databases since writes are not needed"},{"line_number":22,"context_line":"3) There\u0027s a chance that the VM boots very fast and requests."},{"line_number":23,"context_line":"metadata before the service is ready but since the timeout was"},{"line_number":24,"context_line":"15 seconds, we can safely rely on the the cloud-init retries."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5b7420ad_2adf62ec","line":21,"range":{"start_line":21,"start_character":34,"end_line":21,"end_character":61},"in_reply_to":"ba9dfbf6_a3362a25","updated":"2021-05-19 09:58:30.000000000","message":"Ack","commit_id":"dd33687e1e494dae449ab6d3a9dc17463d29279c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"359f66897ade8856f4442c7f959d7558ce058e73","unresolved":true,"context_lines":[{"line_number":18,"context_line":"1) We\u0027ll save writes to OVN SB database which, in highly loaded"},{"line_number":19,"context_line":"systems and at scale reduces significantly the load on ovsdb-server."},{"line_number":20,"context_line":"2) We can make OVN metadata agent to connect to slave instances when"},{"line_number":21,"context_line":"using active-backup OVN databases since writes are not needed"},{"line_number":22,"context_line":"3) There\u0027s a chance that the VM boots very fast and requests."},{"line_number":23,"context_line":"metadata before the service is ready but since the timeout was"},{"line_number":24,"context_line":"15 seconds, we can safely rely on the the cloud-init retries."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba9dfbf6_a3362a25","line":21,"range":{"start_line":21,"start_character":34,"end_line":21,"end_character":61},"in_reply_to":"c40c8059_bc2df07a","updated":"2021-05-19 09:55:00.000000000","message":"Yes, it makes sense. It\u0027s kinda how I imagine it would work. But, I would rephrase point 2) in the next patch-set. Reading it gives the impression that the agent no longer writes to the SB DB but, in reality, even tho we massively reduced the number of writes we still have a few happening.","commit_id":"dd33687e1e494dae449ab6d3a9dc17463d29279c"}],"doc/source/contributor/internals/ovn/metadata_api.rst":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7067d6123b93c3d510b99f812d88011f4b3d5130","unresolved":true,"context_lines":[{"line_number":243,"context_line":"on a hypervisor if it does so before the metadata proxy instance has been"},{"line_number":244,"context_line":"spawned."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Right now, the ``vif-plugged`` event to Nova is sent out when the up column"},{"line_number":247,"context_line":"in the OVN Northbound database\u0027s Logical_Switch_Port table changes to True,"},{"line_number":248,"context_line":"indicating that the VIF is now up. To overcome this race condition we want"},{"line_number":249,"context_line":"to wait until all network UUID\u0027s to which this VM is connected to are present"},{"line_number":250,"context_line":"in ``external-ids:neutron-metadata-proxy-networks`` on the Chassis table"},{"line_number":251,"context_line":"for our chassis in OVN Southbound database. This will delay the event to Nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a818e232_4cea7765","side":"PARENT","line":248,"range":{"start_line":246,"start_character":0,"end_line":248,"end_character":35},"updated":"2021-05-18 15:18:08.000000000","message":"This remains true, doesn\u0027t it?","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c547354f48fed668cfa0ffe3a28cfae11ff9b993","unresolved":true,"context_lines":[{"line_number":243,"context_line":"on a hypervisor if it does so before the metadata proxy instance has been"},{"line_number":244,"context_line":"spawned."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Right now, the ``vif-plugged`` event to Nova is sent out when the up column"},{"line_number":247,"context_line":"in the OVN Northbound database\u0027s Logical_Switch_Port table changes to True,"},{"line_number":248,"context_line":"indicating that the VIF is now up. To overcome this race condition we want"},{"line_number":249,"context_line":"to wait until all network UUID\u0027s to which this VM is connected to are present"},{"line_number":250,"context_line":"in ``external-ids:neutron-metadata-proxy-networks`` on the Chassis table"},{"line_number":251,"context_line":"for our chassis in OVN Southbound database. This will delay the event to Nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d3d483ed_bbff51af","side":"PARENT","line":248,"range":{"start_line":246,"start_character":0,"end_line":248,"end_character":35},"in_reply_to":"794a30cd_07bed995","updated":"2021-05-18 16:13:31.000000000","message":"yes, too much cutting :) sorry","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ff07f9379f9f88642719437838458c66b1d63265","unresolved":true,"context_lines":[{"line_number":243,"context_line":"on a hypervisor if it does so before the metadata proxy instance has been"},{"line_number":244,"context_line":"spawned."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Right now, the ``vif-plugged`` event to Nova is sent out when the up column"},{"line_number":247,"context_line":"in the OVN Northbound database\u0027s Logical_Switch_Port table changes to True,"},{"line_number":248,"context_line":"indicating that the VIF is now up. To overcome this race condition we want"},{"line_number":249,"context_line":"to wait until all network UUID\u0027s to which this VM is connected to are present"},{"line_number":250,"context_line":"in ``external-ids:neutron-metadata-proxy-networks`` on the Chassis table"},{"line_number":251,"context_line":"for our chassis in OVN Southbound database. This will delay the event to Nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"794a30cd_07bed995","side":"PARENT","line":248,"range":{"start_line":246,"start_character":0,"end_line":248,"end_character":35},"in_reply_to":"a818e232_4cea7765","updated":"2021-05-18 16:03:25.000000000","message":"right, this is done in the ML2 plugin, listening to the DB port set events.","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"}],"neutron/agent/ovn/metadata/agent.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a46a4d35aac7890d8f24043c9b18f2da10daf61c","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        if updated:"},{"line_number":568,"context_line":"            with self.sb_idl.create_transaction(check_error\u003dTrue) as txn:"},{"line_number":569,"context_line":"                txn.add(self.sb_idl.set_chassis_metadata_networks("},{"line_number":570,"context_line":"                    self.chassis, current_dps))"}],"source_content_type":"text/x-python","patch_set":6,"id":"b0445df0_684007be","side":"PARENT","line":569,"updated":"2021-05-24 14:19:47.000000000","message":"Perhaps we should discuss how are we going to deal with this list on updated systems where the list is there from previous version but unused. Maybe some maint. task can clean it up.","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"629b97652c198687f88e93e8ad40aefe3c0ef5c4","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        if updated:"},{"line_number":568,"context_line":"            with self.sb_idl.create_transaction(check_error\u003dTrue) as txn:"},{"line_number":569,"context_line":"                txn.add(self.sb_idl.set_chassis_metadata_networks("},{"line_number":570,"context_line":"                    self.chassis, current_dps))"}],"source_content_type":"text/x-python","patch_set":6,"id":"e348e4b9_f46a48d9","side":"PARENT","line":569,"in_reply_to":"770b124a_aa50d578","updated":"2021-05-24 15:22:22.000000000","message":"Right... the good thing is that if we have this list, it\u0027s just some leftovers that are harmless so they can be cleaned up whenever. The db sync script can be run in log mode and if no inconsistencies have been found, it can be run again in repair for this purpose without fencing the API.","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"cb235a8379ff53ac8e5781d9be8a07c595b81f88","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        if updated:"},{"line_number":568,"context_line":"            with self.sb_idl.create_transaction(check_error\u003dTrue) as txn:"},{"line_number":569,"context_line":"                txn.add(self.sb_idl.set_chassis_metadata_networks("},{"line_number":570,"context_line":"                    self.chassis, current_dps))"}],"source_content_type":"text/x-python","patch_set":6,"id":"c2775563_552cceb9","side":"PARENT","line":569,"in_reply_to":"b0445df0_684007be","updated":"2021-05-24 14:51:42.000000000","message":"good point, since it doesn\u0027t hurt I\u0027d just probably have a method called in the db sync script rather than checking that always upon start in prod code? wdyt?","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4395b2c9c1cdfb28d478dc7aa74e1b7276bf6341","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":"        if updated:"},{"line_number":568,"context_line":"            with self.sb_idl.create_transaction(check_error\u003dTrue) as txn:"},{"line_number":569,"context_line":"                txn.add(self.sb_idl.set_chassis_metadata_networks("},{"line_number":570,"context_line":"                    self.chassis, current_dps))"}],"source_content_type":"text/x-python","patch_set":6,"id":"770b124a_aa50d578","side":"PARENT","line":569,"in_reply_to":"c2775563_552cceb9","updated":"2021-05-24 15:15:38.000000000","message":"That\u0027s a good idea. It would mean though that db-sync must be called with minor update and they require minimal API downtime, while db-sync requires API fenced.\n\nOther possibility will be to call clearing commands as part of update process.\n\nNot sure which approach is the best.","commit_id":"c12588c7be7ef6990284a5161975c2b81ff30f03"}]}
