)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"51f2ebd0a692fe07ac3e925d06bb4e124c9abfa0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2f6faf63_2ebabb37","updated":"2024-11-29 15:06:37.000000000","message":"recheck new devstack patch","commit_id":"809b3a711dc55ea2e4403aa06259e904840e67da"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"004b2051de3b794ca70e928c14fc6ec2a1324243","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"59533941_971306c4","updated":"2024-12-04 16:16:17.000000000","message":"Should maybe add someone like Lucas to this?\n\nAlso, I did not see any tests not sure what is possible.","commit_id":"acf7b145d4a903d9c5bb410e6437bc98772fb354"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c46463b09dc1cd0554944eacfb4e86de110424d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2cbdb432_b4babbed","updated":"2024-12-04 10:29:15.000000000","message":"recheck neutron-functional","commit_id":"acf7b145d4a903d9c5bb410e6437bc98772fb354"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"03e464e923b5f3e8b09b833adebf9fb87a35c809","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fd87a3a8_4bed2720","updated":"2024-12-04 07:32:16.000000000","message":"recheck neutron-ovs-grenade-multinode-skip-level","commit_id":"acf7b145d4a903d9c5bb410e6437bc98772fb354"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b77bb253ab690522063198d7034b2b98fc6a3d1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b9fd8cad_9e92cbd5","in_reply_to":"59533941_971306c4","updated":"2024-12-05 06:36:04.000000000","message":"Lucas is no longer working on OpenStack\nI\u0027ll try to add some kind of testing on the new setup method ``_setup_hash_ring_start_time``","commit_id":"acf7b145d4a903d9c5bb410e6437bc98772fb354"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01d0620c72bdbc8c13e9dace1d4d5555579fd0cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b0820d32_70354b2a","updated":"2024-12-09 06:56:01.000000000","message":"recheck neutron-functional","commit_id":"91f94050cc0a15b5cc08df224b1cef15f9c5b38f"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"8ac590063e01a74dbd96ba30edec6e1b1f318fd1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"187c2e9b_ce5e49b0","updated":"2024-12-10 17:51:22.000000000","message":"I would think that this needs a release note and some docs, so that deployment tools other than devstack can implement it?","commit_id":"592984829c64c86c01fa8d4bfd9e907ae0a595bb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"16d07ab93b6917b159ad72c244ca4ee215be89d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"22fe3933_f9b9126b","updated":"2024-12-09 13:54:18.000000000","message":"recheck neutron-tempest-plugin-ovn-ubuntu-jammy","commit_id":"592984829c64c86c01fa8d4bfd9e907ae0a595bb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ed4040f7c703d849dcf17f5c139c4550e684db62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0ced0e02_3741677b","in_reply_to":"187c2e9b_ce5e49b0","updated":"2024-12-11 08:16:47.000000000","message":"Done","commit_id":"592984829c64c86c01fa8d4bfd9e907ae0a595bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"bc428919424da473f35f4ba2184839137f6efff1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"398959a0_37df0620","updated":"2024-12-13 08:42:48.000000000","message":"recheck\nDevstack patch was merged","commit_id":"865097c6896a87fa5b6d508058db9ff1e6c423d1"}],"neutron/db/ovn_hash_ring_db.py":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"08b700a377e82b72f4e8a720dc711b555f1c741f","unresolved":true,"context_lines":[{"line_number":65,"context_line":"            ovn_models.OVNHashRing.group_name \u003d\u003d group_name)"},{"line_number":66,"context_line":"        if created_at:"},{"line_number":67,"context_line":"            query \u003d query.filter("},{"line_number":68,"context_line":"                ovn_models.OVNHashRing.created_at !\u003d created_at)"},{"line_number":69,"context_line":"        query.delete()"},{"line_number":70,"context_line":"    msg \u003d (\u0027Nodes from host \"%s\" and group \"%s\" removed from the Hash Ring\u0027 %"},{"line_number":71,"context_line":"           (CONF.host, group_name))"}],"source_content_type":"text/x-python","patch_set":9,"id":"2dacdb75_adcdceb2","line":68,"updated":"2024-12-09 06:46:43.000000000","message":"Not sure how good to rely on timestamp itself as seems can remove the records created by other worker if the worker is fast/slow then others and cause issues","commit_id":"91f94050cc0a15b5cc08df224b1cef15f9c5b38f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"968e0249ef8e014a27ac8337d910db4731786bd9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            ovn_models.OVNHashRing.group_name \u003d\u003d group_name)"},{"line_number":66,"context_line":"        if created_at:"},{"line_number":67,"context_line":"            query \u003d query.filter("},{"line_number":68,"context_line":"                ovn_models.OVNHashRing.created_at !\u003d created_at)"},{"line_number":69,"context_line":"        query.delete()"},{"line_number":70,"context_line":"    msg \u003d (\u0027Nodes from host \"%s\" and group \"%s\" removed from the Hash Ring\u0027 %"},{"line_number":71,"context_line":"           (CONF.host, group_name))"}],"source_content_type":"text/x-python","patch_set":9,"id":"114f3d9f_0fc6c4aa","line":68,"in_reply_to":"2dacdb75_adcdceb2","updated":"2024-12-09 07:07:50.000000000","message":"All workers of a node will have the same timestamp because it is retrieved from [1]. Any register related to this node that doesn\u0027t match the created_at value should be deleted. It doesn\u0027t matter if the workers create their own register after or before this call because they all will use the same value.\n\n[1]https://review.opendev.org/c/openstack/devstack/+/936669","commit_id":"91f94050cc0a15b5cc08df224b1cef15f9c5b38f"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cf9dc5385834012c5b0af75e8ddd579afb8bd509","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                                worker.MaintenanceWorker,"},{"line_number":309,"context_line":"                                service.RpcWorker)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    @lockutils.synchronized(\u0027hash_ring_probe_lock\u0027, external\u003dTrue)"},{"line_number":312,"context_line":"    def _setup_hash_ring(self):"},{"line_number":313,"context_line":"        \"\"\"Setup the hash ring."},{"line_number":314,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f3888536_ae5beb2c","side":"PARENT","line":311,"range":{"start_line":311,"start_character":4,"end_line":311,"end_character":66},"updated":"2024-11-28 15:37:44.000000000","message":"That doesn\u0027t work in, for example, podified envs.","commit_id":"0ac3fbdf86909e22ea0659146b05eac258626f4b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cf9dc5385834012c5b0af75e8ddd579afb8bd509","unresolved":true,"context_lines":[{"line_number":120,"context_line":"        self._ovn_client_inst \u003d None"},{"line_number":121,"context_line":"        self._maintenance_thread \u003d None"},{"line_number":122,"context_line":"        self._hash_ring_thread \u003d None"},{"line_number":123,"context_line":"        self._hash_ring_probe_event \u003d multiprocessing.Event()"},{"line_number":124,"context_line":"        self.node_uuid \u003d None"},{"line_number":125,"context_line":"        self.hash_ring_group \u003d ovn_const.HASH_RING_ML2_GROUP"},{"line_number":126,"context_line":"        self.sg_enabled \u003d ovn_acl.is_sg_enabled()"}],"source_content_type":"text/x-python","patch_set":1,"id":"107236b4_95da3a9c","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":61},"updated":"2024-11-28 15:37:44.000000000","message":"This is completely wrong in a WSGI deployment. In eventlet, the initial process created this variable. The new forked processes had the same multiprocessing event pointer and using it as a lock was working.\n\nIn a WSGI environment, all processes are independent. This variable is created independently in each process. I\u0027ve added a debug line just after declaring this variable. The variable hash is different in each process [1]. Using it as a lock between processes is useless.\n\n[1]https://paste.opendev.org/show/bZqQ1gRKXG6b6bMJ9QIn/","commit_id":"47ca09f33949d1f521d39341facc32cd435f28f9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d9476e4e4de7d27563f4f10eac09d6ad32854475","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self._ovn_client_inst \u003d None"},{"line_number":121,"context_line":"        self._maintenance_thread \u003d None"},{"line_number":122,"context_line":"        self._hash_ring_thread \u003d None"},{"line_number":123,"context_line":"        self._hash_ring_probe_event \u003d multiprocessing.Event()"},{"line_number":124,"context_line":"        self.node_uuid \u003d None"},{"line_number":125,"context_line":"        self.hash_ring_group \u003d ovn_const.HASH_RING_ML2_GROUP"},{"line_number":126,"context_line":"        self.sg_enabled \u003d ovn_acl.is_sg_enabled()"}],"source_content_type":"text/x-python","patch_set":1,"id":"718aabda_3a84dc1a","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":61},"in_reply_to":"107236b4_95da3a9c","updated":"2024-11-29 09:32:53.000000000","message":"Done","commit_id":"47ca09f33949d1f521d39341facc32cd435f28f9"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"08b700a377e82b72f4e8a720dc711b555f1c741f","unresolved":true,"context_lines":[{"line_number":317,"context_line":"    def _setup_hash_ring(self):"},{"line_number":318,"context_line":"        \"\"\"Setup the hash ring."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        The first worker to acquire the lock is responsible for cleaning"},{"line_number":321,"context_line":"        the hash ring from previous runs as well as start the probing"},{"line_number":322,"context_line":"        thread for this host. Subsequently workers just need to register"},{"line_number":323,"context_line":"        themselves to the hash ring."}],"source_content_type":"text/x-python","patch_set":9,"id":"580391fd_8ce02780","line":320,"updated":"2024-12-09 06:46:43.000000000","message":"The desc no longer valid as not using any lock,\nisn\u0027t there any locking mechanism which we continue to use with uwsgi, that seems would be better instead.","commit_id":"91f94050cc0a15b5cc08df224b1cef15f9c5b38f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"968e0249ef8e014a27ac8337d910db4731786bd9","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    def _setup_hash_ring(self):"},{"line_number":318,"context_line":"        \"\"\"Setup the hash ring."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        The first worker to acquire the lock is responsible for cleaning"},{"line_number":321,"context_line":"        the hash ring from previous runs as well as start the probing"},{"line_number":322,"context_line":"        thread for this host. Subsequently workers just need to register"},{"line_number":323,"context_line":"        themselves to the hash ring."}],"source_content_type":"text/x-python","patch_set":9,"id":"be4c50bb_72e4464e","line":320,"in_reply_to":"580391fd_8ce02780","updated":"2024-12-09 07:07:50.000000000","message":"The locking mechanism between workers is based in the filesystem (locked files). For some environments (for example, containerized deployments), unless a shared resource (directory) is explicitly provided, it is not possible to sync using this shared file. However, using the DB as a sync tool due to its transactionality, works fine.\n\nEven the ``_setup_hash_ring_event`` method won\u0027t actually work in containerized environments because the multithread event doesn\u0027t work among containers.","commit_id":"91f94050cc0a15b5cc08df224b1cef15f9c5b38f"}],"neutron/server/api_eventlet.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"004b2051de3b794ca70e928c14fc6ec2a1324243","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    # import uwsgi"},{"line_number":29,"context_line":"    # print(uwsgi.opt)"},{"line_number":30,"context_line":"    # import sys"},{"line_number":31,"context_line":"    # raise Exception()"},{"line_number":32,"context_line":"    profiler.setup(\u0027neutron-server\u0027, cfg.CONF.host)"},{"line_number":33,"context_line":"    app \u003d config.load_paste_app(\u0027neutron\u0027)"},{"line_number":34,"context_line":"    registry.publish(resources.PROCESS, events.BEFORE_SPAWN,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5950ef3b_fe48157c","line":31,"updated":"2024-12-04 16:16:17.000000000","message":"leftover debug","commit_id":"acf7b145d4a903d9c5bb410e6437bc98772fb354"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b77bb253ab690522063198d7034b2b98fc6a3d1f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    # import uwsgi"},{"line_number":29,"context_line":"    # print(uwsgi.opt)"},{"line_number":30,"context_line":"    # import sys"},{"line_number":31,"context_line":"    # raise Exception()"},{"line_number":32,"context_line":"    profiler.setup(\u0027neutron-server\u0027, cfg.CONF.host)"},{"line_number":33,"context_line":"    app \u003d config.load_paste_app(\u0027neutron\u0027)"},{"line_number":34,"context_line":"    registry.publish(resources.PROCESS, events.BEFORE_SPAWN,"}],"source_content_type":"text/x-python","patch_set":7,"id":"c97a411b_51b8bbd3","line":31,"in_reply_to":"5950ef3b_fe48157c","updated":"2024-12-05 06:36:04.000000000","message":"Done","commit_id":"acf7b145d4a903d9c5bb410e6437bc98772fb354"}]}
