)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"dac13dd828c5622ee9a67a804884a3e822268bc0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If there is some situation where the transaction processing thread"},{"line_number":10,"context_line":"blocks and doesn\u0027t pass along its own exception, raising in the"},{"line_number":11,"context_line":"agent thread after the timeout doesn\u0027t help--the thread doing the"},{"line_number":12,"context_line":"work would still be blocked. In addition, timing out in queue.get()"},{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a30ddce_7cc79345","line":12,"range":{"start_line":11,"start_character":45,"end_line":12,"end_character":27},"updated":"2017-03-07 07:51:31.000000000","message":"There is also a timeout there: https://git.openstack.org/cgit/openstack/neutron/tree/neutron/agent/ovsdb/native/connection.py#n147\n\nSo maybe if it gets stuck, we can still pass some marker object to the queue or exception itself and check for it in the agent thread?","commit_id":"0204b03acac00f79de73d8a1ae9fd4084a441649"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"cccc3dc64866d7573af8a8dd3eea6b2cd1e1232b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If there is some situation where the transaction processing thread"},{"line_number":10,"context_line":"blocks and doesn\u0027t pass along its own exception, raising in the"},{"line_number":11,"context_line":"agent thread after the timeout doesn\u0027t help--the thread doing the"},{"line_number":12,"context_line":"work would still be blocked. In addition, timing out in queue.get()"},{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a30ddce_1853ede2","line":12,"range":{"start_line":11,"start_character":45,"end_line":12,"end_character":27},"in_reply_to":"9a30ddce_7cc79345","updated":"2017-03-07 15:31:25.000000000","message":"This particular timeout is just a \"wake up the select if it hasn\u0027t woken up in $timeout seconds\". We won\u0027t know why we woke up without adding additional time checks and since do_commit() is called when we wake up anyway and it does timeout checking, I\u0027m not too worried about it--especially since we don\u0027t really have any kind of timeout guarantee sine the timeout check is once per loop and run_idl() could theoretically block as long as it wanted w/o a timeout being raised. I\u0027d like to find a better solution to timeout handling in general, but timeouts and threads in Python are really limited/tricky.","commit_id":"0204b03acac00f79de73d8a1ae9fd4084a441649"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"11179438511a458ba95313f2a430b1c774fd252a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: Ia34b9d599b522dd12ef088100c2b68a75a78d797"},{"line_number":17,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a30ddce_fc3b839a","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"updated":"2017-03-07 07:43:54.000000000","message":"Doesn\u0027t seem like a cross-project dependency.","commit_id":"0204b03acac00f79de73d8a1ae9fd4084a441649"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"cccc3dc64866d7573af8a8dd3eea6b2cd1e1232b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: Ia34b9d599b522dd12ef088100c2b68a75a78d797"},{"line_number":17,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a30ddce_98143df6","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"in_reply_to":"9a30ddce_fc3b839a","updated":"2017-03-07 15:31:25.000000000","message":"Just needed it to pass some tests. I\u0027ll go ahead and remove it now that it has merged to trigger a recheck. :p","commit_id":"0204b03acac00f79de73d8a1ae9fd4084a441649"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d9062cf89b8275810052417aba0d7e1533615bcb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"blocks and doesn\u0027t pass along its own exception, raising in the"},{"line_number":11,"context_line":"agent thread after the timeout doesn\u0027t help--the thread doing the"},{"line_number":12,"context_line":"work would still be blocked. In addition, timing out in queue.get()"},{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a30ddce_88f1ae6d","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":7},"updated":"2017-03-10 18:56:29.000000000","message":"raises","commit_id":"702f76f2b58fdeb30e25cad1d3fbd122f456e4b3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"954247fbe831285f7d8e3abefcfb069f968279f0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"agent thread after the timeout doesn\u0027t help--the thread doing the"},{"line_number":12,"context_line":"work would still be blocked. In addition, timing out in queue.get()"},{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a30ddce_e920034c","line":14,"updated":"2017-03-07 19:08:32.000000000","message":"shouldn\u0027t we then have some mechanism to fetch_result_or_kill the current transaction processing and call it from within QueueEmpty handler?","commit_id":"702f76f2b58fdeb30e25cad1d3fbd122f456e4b3"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"bace3b86c046c229272ba592cd42068caa33ff3f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"agent thread after the timeout doesn\u0027t help--the thread doing the"},{"line_number":12,"context_line":"work would still be blocked. In addition, timing out in queue.get()"},{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a30ddce_ebeb3276","line":14,"in_reply_to":"9a30ddce_e920034c","updated":"2017-03-09 21:43:03.000000000","message":"The problem is how difficult it is to safely kill from the agent thread. You can\u0027t really kill after the commit_block() in do_commit() happens because then everything\u0027s already committed to the db. But, things may still block for some reason after that, like TRY_AGAIN processing or something in post_commit(). So then what do you do? Wait some amount of time just in case it returns? Completely tear down the connection and try again--likely running into the same problem you did the first time.\n\nI\u0027m not sure there what the best thing to do is, so with this patch I made the assumption that one blocked thread is as bad as two and timeouts should only be processed in one of them. That may not be the best solution, but it was certainly easier. :) I can try to add some \u0027wants_to_cancel/safe_to_cancel\u0027 variables for communicating between the threads--I just always get a little nervous I\u0027m going to make things worse as I make them more complicated.","commit_id":"702f76f2b58fdeb30e25cad1d3fbd122f456e4b3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d9062cf89b8275810052417aba0d7e1533615bcb","unresolved":false,"context_lines":[{"line_number":11,"context_line":"agent thread after the timeout doesn\u0027t help--the thread doing the"},{"line_number":12,"context_line":"work would still be blocked. In addition, timing out in queue.get()"},{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a30ddce_28afe22a","line":14,"in_reply_to":"9a30ddce_ebeb3276","updated":"2017-03-10 18:56:29.000000000","message":"Do you think it may help the next reader of the code to explain your reasoning here in the code?","commit_id":"702f76f2b58fdeb30e25cad1d3fbd122f456e4b3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"954247fbe831285f7d8e3abefcfb069f968279f0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a30ddce_896307b1","line":16,"updated":"2017-03-07 19:08:32.000000000","message":"related-bug?","commit_id":"702f76f2b58fdeb30e25cad1d3fbd122f456e4b3"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"bace3b86c046c229272ba592cd42068caa33ff3f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"raisies the possibility of the transaction actually completing but"},{"line_number":14,"context_line":"a TimeoutException being raised anyway."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8d26047693f129842f4662bf494deb920e349eaa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a30ddce_4bfb5e47","line":16,"in_reply_to":"9a30ddce_896307b1","updated":"2017-03-09 21:43:03.000000000","message":"will do","commit_id":"702f76f2b58fdeb30e25cad1d3fbd122f456e4b3"}]}
