)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ca9a2c58132ac2365ee1f6c3c556a4f65e903e03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cb45dd57_8a120f08","updated":"2021-10-11 09:51:15.000000000","message":"\u003e Patch Set 4: Code-Review+1\n\u003e \n\u003e LGTM, but i\u0027ll let Oleg look as he had some initial comments.\n\nThat was addresses in PS3 (and PS4). Now we handle the initial state per router and we receive the delete router events, removing that entry from the local \"_initial_state_change_per_router\" dictionary (as requested by Oleg and Slawek).","commit_id":"c20f2e5136fd241f4be5c37403ab1ed54cdaefb5"}],"neutron/agent/l3/ha.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d2a4bb5ee2f15255b6dfcf5cc4cc075f0d71360a","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        eventlet.spawn(self._start_keepalived_notifications_server)"},{"line_number":88,"context_line":"        self._transition_states \u003d {}"},{"line_number":89,"context_line":"        self._transition_state_mutex \u003d threading.Lock()"},{"line_number":90,"context_line":"        self._first_state_change \u003d True"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @property"},{"line_number":93,"context_line":"    def first_state_change(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6e574909_f6c39733","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":39},"updated":"2021-09-30 08:08:23.000000000","message":"IIUC it should be per router, not per agent","commit_id":"81f9eed31405074cbf5d3035c335b4916abc8fbb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e308911562ff6db054846f54d662d2986a227a53","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        eventlet.spawn(self._start_keepalived_notifications_server)"},{"line_number":88,"context_line":"        self._transition_states \u003d {}"},{"line_number":89,"context_line":"        self._transition_state_mutex \u003d threading.Lock()"},{"line_number":90,"context_line":"        self._first_state_change \u003d True"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @property"},{"line_number":93,"context_line":"    def first_state_change(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"48bf48f3_fb17e062","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":39},"in_reply_to":"1a7f81d2_10b3e708","updated":"2021-10-11 09:48:41.000000000","message":"Done","commit_id":"81f9eed31405074cbf5d3035c335b4916abc8fbb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"723de834a9e20a9444f1fe84aaa77af9540ca04c","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        eventlet.spawn(self._start_keepalived_notifications_server)"},{"line_number":88,"context_line":"        self._transition_states \u003d {}"},{"line_number":89,"context_line":"        self._transition_state_mutex \u003d threading.Lock()"},{"line_number":90,"context_line":"        self._first_state_change \u003d True"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @property"},{"line_number":93,"context_line":"    def first_state_change(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a7f81d2_10b3e708","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":39},"in_reply_to":"6e574909_f6c39733","updated":"2021-09-30 08:57:11.000000000","message":"You are right, good catch.","commit_id":"81f9eed31405074cbf5d3035c335b4916abc8fbb"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"f3c54e7a339f5873a7bba545ac2cb1410d815188","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    def initial_state_change(self, router_id):"},{"line_number":93,"context_line":"        initial_state \u003d router_id not in self._initial_state_change_per_router"},{"line_number":94,"context_line":"        if initial_state:"},{"line_number":95,"context_line":"            self._initial_state_change_per_router.add(router_id)"},{"line_number":96,"context_line":"        return initial_state"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _get_router_info(self, router_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9bee6e20_6e7f3173","line":95,"range":{"start_line":95,"start_character":12,"end_line":95,"end_character":64},"updated":"2021-09-30 10:43:13.000000000","message":"nerd comment: consider remove router_id from the set on delete, to prevent memory grow","commit_id":"b0d420bb8577b8fa61caa35082982d49077d5c0c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6089039da78936371a88bd0142e19103fc85bfd9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def initial_state_change(self, router_id):"},{"line_number":93,"context_line":"        initial_state \u003d router_id not in self._initial_state_change_per_router"},{"line_number":94,"context_line":"        if initial_state:"},{"line_number":95,"context_line":"            self._initial_state_change_per_router.add(router_id)"},{"line_number":96,"context_line":"        return initial_state"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _get_router_info(self, router_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"238c124d_8d11a1eb","line":95,"range":{"start_line":95,"start_character":12,"end_line":95,"end_character":64},"in_reply_to":"5677de82_cd3dabc2","updated":"2021-10-04 11:35:53.000000000","message":"Done","commit_id":"b0d420bb8577b8fa61caa35082982d49077d5c0c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"89bc0aeafbfc65240c8f94d3f49b28b7f368dca3","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    def initial_state_change(self, router_id):"},{"line_number":93,"context_line":"        initial_state \u003d router_id not in self._initial_state_change_per_router"},{"line_number":94,"context_line":"        if initial_state:"},{"line_number":95,"context_line":"            self._initial_state_change_per_router.add(router_id)"},{"line_number":96,"context_line":"        return initial_state"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _get_router_info(self, router_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5677de82_cd3dabc2","line":95,"range":{"start_line":95,"start_character":12,"end_line":95,"end_character":64},"in_reply_to":"740e756f_6db89b31","updated":"2021-10-04 07:12:19.000000000","message":"You can maybe do it in the _router_removed() method in neutron.agent.l3.agent.L3NATAgent class which inherits from that AgentMixin. I know it\u0027s not the best but at least we will not have memory grow which Oleg is talking about.","commit_id":"b0d420bb8577b8fa61caa35082982d49077d5c0c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"70869553fbbc437a30a51458ebd251423ea90264","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    def initial_state_change(self, router_id):"},{"line_number":93,"context_line":"        initial_state \u003d router_id not in self._initial_state_change_per_router"},{"line_number":94,"context_line":"        if initial_state:"},{"line_number":95,"context_line":"            self._initial_state_change_per_router.add(router_id)"},{"line_number":96,"context_line":"        return initial_state"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _get_router_info(self, router_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"740e756f_6db89b31","line":95,"range":{"start_line":95,"start_character":12,"end_line":95,"end_character":64},"in_reply_to":"9bee6e20_6e7f3173","updated":"2021-09-30 14:02:31.000000000","message":"Yes, I though about this but from this class is more difficult to implement this removal.\n\nIn any case, 10K, 20K or more elements won\u0027t affect too much, considering that create (and delete) so many routers is excessive.","commit_id":"b0d420bb8577b8fa61caa35082982d49077d5c0c"}]}
