)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"621a8abbc676102ca1562127f88c9c7db45ea0dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f888854d_04d5cbdf","updated":"2023-11-16 20:21:30.000000000","message":"I\u0027m having trouble reproducing the issue. I have a machine with no openvswitch installed locally, it builds everything in the functional venv, and all of the vtep tests always pass. It also passes if I install the patch, and if the patch is installed but the `_wait_db_rows()` method is modified to do nothing.\n\nI don\u0027t really like looping and calling sleep anytime we don\u0027t absolutely have to, and there are ways to avoid it like using a WaitEvent to ensure tests don\u0027t run until the rows are created, etc.\n\nIf I could reproduce the issue, I\u0027d just write something using events, or not accessing table.rows directly, etc. to show what I mean. But the issue doesn\u0027t seem to happen in my environment.\n\nIn the end, it\u0027s only for a couple of vtep-specific tests and if you say it\u0027s needed in some environment, I can accept that and hold my nose and swallow some extra `sleep()` calls. ;) I\u0027m fine with accepting it as-is and if we have time to obsess over making it prettier later, we can do that.","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"621a8abbc676102ca1562127f88c9c7db45ea0dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"be618d51_ea0d51e7","updated":"2023-11-16 20:21:30.000000000","message":"I\u0027ve tried reproducing this on my system several different ways and I\u0027ve never had the tests fail. I\u0027ve tested without the patch, with the patch, and with the patch but the wait_db_rows() doing nothing/no sleep. Everything always passes and it\u0027s","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"047fa30d982f386d6b53b7a095f5845aebb09274","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"60323ee7_758678ce","updated":"2023-09-28 07:00:53.000000000","message":"good catch, thanks","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"179bce25bf23f6a6f870b9662e6a64743df20a9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"51629f25_22cb96d5","in_reply_to":"f888854d_04d5cbdf","updated":"2023-11-17 18:57:43.000000000","message":"Locally I also have no problems and the test always passes. I added this waiter only because the test fails in zuul (https://zuul.opendev.org/t/openstack/build/c96130ac049342189c8ad3513e73d2dd). I think I understood the problem correctly (my previous comment), but most likely it can be solved better, if you tell me how to do this, then I will rewrite this sleep.","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"}],"ovsdbapp/tests/functional/schema/hardware_vtep/test_impl_idl.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"272378d4929e5b19dd53f8b04f0f430c5fb0da2d","unresolved":true,"context_lines":[{"line_number":354,"context_line":"        ]:"},{"line_number":355,"context_line":"            self.addCleanup(self.ovsvenv.call, args)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def _wait_db_rows(self, table):"},{"line_number":358,"context_line":"        \"\"\"Wait for rows in specified table. Raises RuntimeError otherwise.\"\"\""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        for _ in range(4):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3bed6be3_7cbde742","line":357,"updated":"2023-10-04 23:27:40.000000000","message":"I don\u0027t have any experience with the VTEP stuff, but any idea why this wait is required only here?\n\nIf .rows doesn\u0027t exist, that means the initial connection hasn\u0027t finished. I *think* if we access the rows via actual commands like `db_list()` etc., that it will force us to wait for the initial connection/db dump to finish since `Connection.start()` calls idlutils.wait_for_change().\n\nSo something like (completely untested):\n```\nfor table in [\u0027Ucast_Macs_Local\u0027, \u0027Mcast_Macs_Local\u0027]:\n    self.assertEqual(1, len(self.api.db_list(table).execute()))\n```\n\nmight work w/o having to hardcode an arbitrary timeout. No promises though. I see a call in there to self.idl.post_connect(), so it looks like there might be a way to maybe have a `post_connect()` that sets a threading.Event that we could wait on as well in the fixture? Just a quick guess, though. I haven\u0027t investigated it thoroughly yet.","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"5eb92a533015f8313a16144263eba8744bd72774","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        ]:"},{"line_number":355,"context_line":"            self.addCleanup(self.ovsvenv.call, args)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def _wait_db_rows(self, table):"},{"line_number":358,"context_line":"        \"\"\"Wait for rows in specified table. Raises RuntimeError otherwise.\"\"\""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        for _ in range(4):"}],"source_content_type":"text/x-python","patch_set":3,"id":"381a3a1e_e7d89c2d","line":357,"in_reply_to":"36c77545_cd2ea32a","updated":"2023-11-16 20:21:43.000000000","message":"Done","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"5b091176dc68c14dc525c4085f18f09968ad73e6","unresolved":true,"context_lines":[{"line_number":354,"context_line":"        ]:"},{"line_number":355,"context_line":"            self.addCleanup(self.ovsvenv.call, args)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def _wait_db_rows(self, table):"},{"line_number":358,"context_line":"        \"\"\"Wait for rows in specified table. Raises RuntimeError otherwise.\"\"\""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        for _ in range(4):"}],"source_content_type":"text/x-python","patch_set":3,"id":"52dceff1_d2eb026e","line":357,"in_reply_to":"3bed6be3_7cbde742","updated":"2023-10-05 08:56:01.000000000","message":"There\u0027s nothing VTEP-specific here.  In the `setUp`, rows are added to \"Ucast_Macs_Local\" and \"Mcast_Macs_Local\" tables using the `ovsvenv.call`, i.e. externally, and most likely the DB in memory just doesn\u0027t have time to update. I have locally tests running successfully without this wait. I think calling the `time.sleep(1)` is enough here, but it looks too bad, imho.","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"},{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"1de9953c82413eb099d9f294dd7b7b30e54d48a5","unresolved":true,"context_lines":[{"line_number":354,"context_line":"        ]:"},{"line_number":355,"context_line":"            self.addCleanup(self.ovsvenv.call, args)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    def _wait_db_rows(self, table):"},{"line_number":358,"context_line":"        \"\"\"Wait for rows in specified table. Raises RuntimeError otherwise.\"\"\""},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        for _ in range(4):"}],"source_content_type":"text/x-python","patch_set":3,"id":"36c77545_cd2ea32a","line":357,"in_reply_to":"52dceff1_d2eb026e","updated":"2023-11-03 12:04:53.000000000","message":"gentle ping. Do I need to do anything else?","commit_id":"dd56fd5bea15bcf26ee95b183e6f8f12c8574d74"}]}
