)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4f3bfba483dde6ce3fb0211ed17f52254477ecc4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1747a3a4_e481cf59","updated":"2024-01-30 19:41:08.000000000","message":"It\u0027s a bit difficult to test this. I will share some logs to demonstrate the issue.","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"697293f040e932f919ea8b0cbb5db98ea11d1d63","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"096ae6e1_99b04542","updated":"2024-02-06 16:43:40.000000000","message":"This patch should probably have a test case added that validates that for multi-segment network, spurious cleanups are not executed.","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d74688f19af687a46345dfd0120ed8b088920e10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e5319b2e_b7ae96fe","updated":"2024-01-31 08:17:21.000000000","message":"recheck unrelated 404 resource not found","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"245f0a198a59e634f25d84372a29dcf308409c73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1ff9e39d_00b2cc01","updated":"2024-06-05 13:24:02.000000000","message":"could you please rebase this patch on top of master to have fresh result?","commit_id":"5dc934e9def86b38bc6c3f82e0aad4f2e1722feb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b5c7c3d27619839aa3039adf2584c6fc4c607513","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c5fd73fa_a3e69151","updated":"2024-06-26 08:44:18.000000000","message":"Thanks","commit_id":"06bc855dcf9521ac9c0be1ad7a2fa9bd115a1fd3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2565c0d7659ac1c64fdb74ff66d7cd84a6560c1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f33a69eb_c798f3f7","updated":"2024-06-26 20:50:13.000000000","message":"recheck grenade","commit_id":"06bc855dcf9521ac9c0be1ad7a2fa9bd115a1fd3"}],"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31af52a3297f1f067fc65f29408554036d4ee1dd","unresolved":true,"context_lines":[{"line_number":235,"context_line":"                        self._call_driver("},{"line_number":236,"context_line":"                            \u0027disable\u0027, network, segment\u003dNone, block\u003dTrue)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"                network.subnets \u003d subnets"},{"line_number":239,"context_line":"                ret.append(self._call_driver("},{"line_number":240,"context_line":"                    action, network, segment\u003dsid_segment.get(seg_id),"},{"line_number":241,"context_line":"                    **action_kwargs))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5de013da_49a30be4","line":238,"updated":"2024-02-06 16:42:38.000000000","message":"now, network stored in cache will retain the list of subnets set to it that happen to belong to the last segment inspected in the for-loop. The next time any other code pulls the .subnets attribute from the cached network object, they may see something different from what the initial call to call_driver saw. (An example of it is in line 219 above.)\n\nIs it a problem?","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2ba61d52e01cad9118655c97642b3e51c1bf3bf8","unresolved":true,"context_lines":[{"line_number":235,"context_line":"                        self._call_driver("},{"line_number":236,"context_line":"                            \u0027disable\u0027, network, segment\u003dNone, block\u003dTrue)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"                network.subnets \u003d subnets"},{"line_number":239,"context_line":"                ret.append(self._call_driver("},{"line_number":240,"context_line":"                    action, network, segment\u003dsid_segment.get(seg_id),"},{"line_number":241,"context_line":"                    **action_kwargs))"}],"source_content_type":"text/x-python","patch_set":1,"id":"f09105de_3986bf02","line":238,"in_reply_to":"5de013da_49a30be4","updated":"2024-03-25 16:04:26.000000000","message":"It\u0027s an interesting point, where do you see that cache and why the object would be reused when calling driver, I don\u0027t think so at that point of my investigcation","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c7826b946fbee3a3c336250504a196162fb2f777","unresolved":true,"context_lines":[{"line_number":235,"context_line":"                        self._call_driver("},{"line_number":236,"context_line":"                            \u0027disable\u0027, network, segment\u003dNone, block\u003dTrue)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"                network.subnets \u003d subnets"},{"line_number":239,"context_line":"                ret.append(self._call_driver("},{"line_number":240,"context_line":"                    action, network, segment\u003dsid_segment.get(seg_id),"},{"line_number":241,"context_line":"                    **action_kwargs))"}],"source_content_type":"text/x-python","patch_set":1,"id":"f85e5dcd_1103dbc7","line":238,"in_reply_to":"f09105de_3986bf02","updated":"2024-04-05 13:51:38.000000000","message":"The `network` argument passed into `call_driver` comes from `self.cache` (see an example in `disable_dhcp_helper`, line 466). So modifying its state here now changes what is in `self.cache`. (Before this patch, we were `deepcopy`-ing the passed argument and hence the original cached value `.subnets` field was not modified.)","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1615d2e3ca93431faf3b3d2f497cb18cf321a7f8","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                        self._call_driver("},{"line_number":236,"context_line":"                            \u0027disable\u0027, network, segment\u003dNone, block\u003dTrue)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"                network.subnets \u003d subnets"},{"line_number":239,"context_line":"                ret.append(self._call_driver("},{"line_number":240,"context_line":"                    action, network, segment\u003dsid_segment.get(seg_id),"},{"line_number":241,"context_line":"                    **action_kwargs))"}],"source_content_type":"text/x-python","patch_set":1,"id":"567c764b_0cd5d48d","line":238,"in_reply_to":"f85e5dcd_1103dbc7","updated":"2024-04-26 07:55:04.000000000","message":"No, no the network is coming from a rpc call to enable network, and for disable the network coming from cache has not been touched, then it get removed. I think we are good.","commit_id":"ca8cc119acfe534b65191eb286366ec9267a6e1c"}],"neutron/tests/unit/agent/dhcp/test_agent.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"bc82814949704695703d0db9fb1577f16f16f921","unresolved":true,"context_lines":[{"line_number":396,"context_line":"            # _call_driver()."},{"line_number":397,"context_line":"            _call_driver.assert_has_calls(["},{"line_number":398,"context_line":"                mock.call(\"disable\", network, segment\u003dNone, block\u003dTrue),"},{"line_number":399,"context_line":"                # It is not possible to assert on \u0027network\u0027 as there is a copy"},{"line_number":400,"context_line":"                # happening. The copy will be removed, see bug #2051729."},{"line_number":401,"context_line":"                mock.call(\"enable\", mock.ANY, segment\u003dseg0),"},{"line_number":402,"context_line":"                mock.call(\"enable\", mock.ANY, segment\u003dseg1)])"}],"source_content_type":"text/x-python","patch_set":2,"id":"94e0cf81_2c44e939","side":"PARENT","line":399,"updated":"2024-04-05 13:54:48.000000000","message":"perhaps we could extend NetModel class (or its parent) to implement __eq__ which would then be used by assert_has_calls?","commit_id":"5453c92a2e777b9a41989cc21d6064ffe4711e8d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"69635de85d69f985f9671bc74fd1397ee86c3417","unresolved":true,"context_lines":[{"line_number":396,"context_line":"            # _call_driver()."},{"line_number":397,"context_line":"            _call_driver.assert_has_calls(["},{"line_number":398,"context_line":"                mock.call(\"disable\", network, segment\u003dNone, block\u003dTrue),"},{"line_number":399,"context_line":"                # It is not possible to assert on \u0027network\u0027 as there is a copy"},{"line_number":400,"context_line":"                # happening. The copy will be removed, see bug #2051729."},{"line_number":401,"context_line":"                mock.call(\"enable\", mock.ANY, segment\u003dseg0),"},{"line_number":402,"context_line":"                mock.call(\"enable\", mock.ANY, segment\u003dseg1)])"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc6ea502_5075de5c","side":"PARENT","line":399,"in_reply_to":"06753b75_caaec60f","updated":"2024-06-05 12:34:55.000000000","message":"@ihrachys@redhat.com I can\u0027t see if adding eq method to DictModel or NetModel would make this call simpler, could you give hints?","commit_id":"5453c92a2e777b9a41989cc21d6064ffe4711e8d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7a2e68eac4812d95a0befd47e37d8cb84585097b","unresolved":true,"context_lines":[{"line_number":396,"context_line":"            # _call_driver()."},{"line_number":397,"context_line":"            _call_driver.assert_has_calls(["},{"line_number":398,"context_line":"                mock.call(\"disable\", network, segment\u003dNone, block\u003dTrue),"},{"line_number":399,"context_line":"                # It is not possible to assert on \u0027network\u0027 as there is a copy"},{"line_number":400,"context_line":"                # happening. The copy will be removed, see bug #2051729."},{"line_number":401,"context_line":"                mock.call(\"enable\", mock.ANY, segment\u003dseg0),"},{"line_number":402,"context_line":"                mock.call(\"enable\", mock.ANY, segment\u003dseg1)])"}],"source_content_type":"text/x-python","patch_set":2,"id":"06753b75_caaec60f","side":"PARENT","line":399,"in_reply_to":"94e0cf81_2c44e939","updated":"2024-04-26 07:57:13.000000000","message":"I\u0027m not sure to get your point, we want to assert parameters passed.","commit_id":"5453c92a2e777b9a41989cc21d6064ffe4711e8d"}]}
