)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5595da3b870c731b62490a6ad460a0a48409c656","unresolved":true,"context_lines":[{"line_number":11,"context_line":"connection changes and new jobs after being closed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Related-Bug: #2170749"},{"line_number":14,"context_line":"Co-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"},{"line_number":15,"context_line":"Change-Id: Ica6d7b4b97756e09b4a3f8b9b6c3a4db35709409"},{"line_number":16,"context_line":"Signed-off-by: Alicja Filipek \u003calicja.filipek@cleura.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"43111eda_beb47796","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":14},"updated":"2026-10-20 14:26:46.000000000","message":"AI can\u0027t author a commit. Use Assisted-By or Generated-By. Please read https://openinfra.org/legal/ai-policy/ .","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"cce3ac22c212588e04268dbd195dbf6520e0a08b","unresolved":true,"context_lines":[{"line_number":11,"context_line":"connection changes and new jobs after being closed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Related-Bug: #2170749"},{"line_number":14,"context_line":"Co-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"},{"line_number":15,"context_line":"Change-Id: Ica6d7b4b97756e09b4a3f8b9b6c3a4db35709409"},{"line_number":16,"context_line":"Signed-off-by: Alicja Filipek \u003calicja.filipek@cleura.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e705028c_43fbd945","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":14},"in_reply_to":"43111eda_beb47796","updated":"2026-10-21 13:04:06.000000000","message":"Ok, done.","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"b4606e5855a8afaff2ce7ccc56ef39d7196606c1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"connection changes and new jobs after being closed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Related-Bug: #2170749"},{"line_number":14,"context_line":"Co-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"},{"line_number":15,"context_line":"Change-Id: Ica6d7b4b97756e09b4a3f8b9b6c3a4db35709409"},{"line_number":16,"context_line":"Signed-off-by: Alicja Filipek \u003calicja.filipek@cleura.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"17726b15_066a6e09","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":14},"in_reply_to":"e705028c_43fbd945","updated":"2026-10-26 09:23:22.000000000","message":"Done","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"b378bcd98ffa13b42f6bb53b9ccb41372d41be02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2af35b42_364f1357","updated":"2026-10-20 15:18:22.000000000","message":"@kajinamit@oss.nttdata.com Hello, problem confirmed in 2026.1 too, we can backport it after this merged.","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a728649c9f0a09f9c7f5c0efd012c9d010470e47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"34cdca7f_af94c5cf","updated":"2026-10-29 15:35:30.000000000","message":"We could probably use a flag, rather than a wrapper class, but it can interfere with the other on_job_posting calls which I have to take deeper look, so I\u0027m ok with the proposed approach now.","commit_id":"3635d5300e296ea76a34f98f9b62e614ed7ef554"}],"taskflow/tests/unit/jobs/test_zk_job.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f36002f9a5be70ebba5b35f7b5e8edb025428c87","unresolved":true,"context_lines":[{"line_number":293,"context_line":"        board \u003d self.make_board()"},{"line_number":294,"context_line":"        board.connect()"},{"line_number":295,"context_line":"        self.assertIn(board._state_change_listener, self.listeners)"},{"line_number":296,"context_line":"        board.close()"},{"line_number":297,"context_line":"        self.assertNotIn(board._state_change_listener, self.listeners)"},{"line_number":298,"context_line":"        self.client.stop.assert_not_called()"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def test_close_stops_job_watch(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"d84f29b5_a719e5f9","line":297,"range":{"start_line":296,"start_character":21,"end_line":297,"end_character":70},"updated":"2026-10-20 14:38:41.000000000","message":"Can we also assert length of listeners to make sure anything is not left behind ? We may also want to assert the length before /after connect and close, too.","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"b4606e5855a8afaff2ce7ccc56ef39d7196606c1","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        board \u003d self.make_board()"},{"line_number":294,"context_line":"        board.connect()"},{"line_number":295,"context_line":"        self.assertIn(board._state_change_listener, self.listeners)"},{"line_number":296,"context_line":"        board.close()"},{"line_number":297,"context_line":"        self.assertNotIn(board._state_change_listener, self.listeners)"},{"line_number":298,"context_line":"        self.client.stop.assert_not_called()"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def test_close_stops_job_watch(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"898c2743_31a6291e","line":297,"range":{"start_line":296,"start_character":21,"end_line":297,"end_character":70},"in_reply_to":"53204201_78cb32d7","updated":"2026-10-26 09:23:22.000000000","message":"Done","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"cce3ac22c212588e04268dbd195dbf6520e0a08b","unresolved":true,"context_lines":[{"line_number":293,"context_line":"        board \u003d self.make_board()"},{"line_number":294,"context_line":"        board.connect()"},{"line_number":295,"context_line":"        self.assertIn(board._state_change_listener, self.listeners)"},{"line_number":296,"context_line":"        board.close()"},{"line_number":297,"context_line":"        self.assertNotIn(board._state_change_listener, self.listeners)"},{"line_number":298,"context_line":"        self.client.stop.assert_not_called()"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def test_close_stops_job_watch(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"53204201_78cb32d7","line":297,"range":{"start_line":296,"start_character":21,"end_line":297,"end_character":70},"in_reply_to":"d84f29b5_a719e5f9","updated":"2026-10-21 13:04:06.000000000","message":"Sure, added. I have also added a listener before connecting the board, to test that closing board does not remove it.","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f36002f9a5be70ebba5b35f7b5e8edb025428c87","unresolved":true,"context_lines":[{"line_number":307,"context_line":"            board.close()"},{"line_number":308,"context_line":"            board.connect()"},{"line_number":309,"context_line":"            new_func \u003d children_watch.call_args.kwargs[\u0027func\u0027]"},{"line_number":310,"context_line":"        self.assertIs(False, old_func([]))"},{"line_number":311,"context_line":"        self.assertIsNone(new_func([]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"86b9f289_359245de","line":310,"range":{"start_line":310,"start_character":29,"end_line":310,"end_character":37},"updated":"2026-10-20 14:38:41.000000000","message":"I could be wrong but this looks equivalent to testing _on_job_posting and am unsure if it can really return False. In addition it\u0027s not quite clear how this verifies that the watcher is stopped. Maybe we want a few short comments to describe it.","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"cce3ac22c212588e04268dbd195dbf6520e0a08b","unresolved":true,"context_lines":[{"line_number":307,"context_line":"            board.close()"},{"line_number":308,"context_line":"            board.connect()"},{"line_number":309,"context_line":"            new_func \u003d children_watch.call_args.kwargs[\u0027func\u0027]"},{"line_number":310,"context_line":"        self.assertIs(False, old_func([]))"},{"line_number":311,"context_line":"        self.assertIsNone(new_func([]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe7bfc2_1ee2bced","line":310,"range":{"start_line":310,"start_character":29,"end_line":310,"end_character":37},"in_reply_to":"86b9f289_359245de","updated":"2026-10-21 13:04:06.000000000","message":"It is not about _on_job_posting returning False, but _StoppableJobWatch class that has board set to None returns False. It did not verify that the watcher is stopped, that part I have added now.","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"b4606e5855a8afaff2ce7ccc56ef39d7196606c1","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            board.close()"},{"line_number":308,"context_line":"            board.connect()"},{"line_number":309,"context_line":"            new_func \u003d children_watch.call_args.kwargs[\u0027func\u0027]"},{"line_number":310,"context_line":"        self.assertIs(False, old_func([]))"},{"line_number":311,"context_line":"        self.assertIsNone(new_func([]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"64a2c651_be80ad1b","line":310,"range":{"start_line":310,"start_character":29,"end_line":310,"end_character":37},"in_reply_to":"ffe7bfc2_1ee2bced","updated":"2026-10-26 09:23:22.000000000","message":"Done","commit_id":"7f040cbdca5d12edb07e2e2e09a564698788b69d"}]}
