)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"6fccec2f70e8d13594ad6bfed9e2111cd0aad104","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chang Bo Guo \u003cguochbo@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-07-09 01:27:13 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix blocking other threads issue when copy file"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In powervm driver, it takes long time to copy image file between"},{"line_number":10,"context_line":"control node and IVM host and it also calculates file checksum before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAP3%2F%2F6iY%3D","line":7,"updated":"2013-07-09 09:37:45.000000000","message":"when copying","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"6fccec2f70e8d13594ad6bfed9e2111cd0aad104","unresolved":false,"context_lines":[{"line_number":9,"context_line":"In powervm driver, it takes long time to copy image file between"},{"line_number":10,"context_line":"control node and IVM host and it also calculates file checksum before"},{"line_number":11,"context_line":"and after transferring image file. Because nova-compute is single"},{"line_number":12,"context_line":"threaded, it wont process any other work at the same time. Here give"},{"line_number":13,"context_line":"other threads chance to run by using time.sleep(0), that acts as a"},{"line_number":14,"context_line":"yield of the thread for eventlet with harmless."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAP3%2F%2F6iM%3D","line":12,"updated":"2013-07-09 09:37:45.000000000","message":"thread, won\u0027t","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a89175da1cabcf5844777d90684d2cfd9008fa5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chang Bo Guo \u003cguochbo@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-07-10 00:37:02 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix blocking when powervm driver transfers file"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In powervm driver, it takes long time to copy image file between"},{"line_number":10,"context_line":"control node and IVM host and it also calculates file checksum before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAP3%2F%2F1t4%3D","line":7,"updated":"2013-07-10 16:07:18.000000000","message":"This doesn\u0027t really fix that, right? It yields between the transfer and the checksum calculation. Perhaps an adjusted summary is appropriate?","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"7ef83697d9d2635bd6a30d2661aff5a38be34835","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chang Bo Guo \u003cguochbo@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-07-10 00:37:02 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix blocking when powervm driver transfers file"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In powervm driver, it takes long time to copy image file between"},{"line_number":10,"context_line":"control node and IVM host and it also calculates file checksum before"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAP3%2F%2Fzyc%3D","line":7,"in_reply_to":"AAAAP3%2F%2F1t4%3D","updated":"2013-07-11 04:58:53.000000000","message":"Yes, only reduce the blocking issue not  fix .","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a89175da1cabcf5844777d90684d2cfd9008fa5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and after transferring image file. Because nova-compute is a single"},{"line_number":12,"context_line":"thread, it won\u0027t process any other work at the same time. Here give"},{"line_number":13,"context_line":"other threads chance to run by using time.sleep(0), that acts as a"},{"line_number":14,"context_line":"yield of the thread for eventlet with harmless."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Fixes bug #1181895"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAP3%2F%2F1ts%3D","line":14,"updated":"2013-07-10 16:07:18.000000000","message":"\"with harmless\" doesn\u0027t make sense here. Perhaps you meant \"which is harmless\" ?","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"7ef83697d9d2635bd6a30d2661aff5a38be34835","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and after transferring image file. Because nova-compute is a single"},{"line_number":12,"context_line":"thread, it won\u0027t process any other work at the same time. Here give"},{"line_number":13,"context_line":"other threads chance to run by using time.sleep(0), that acts as a"},{"line_number":14,"context_line":"yield of the thread for eventlet with harmless."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Fixes bug #1181895"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAP3%2F%2FzyE%3D","line":14,"in_reply_to":"AAAAP3%2F%2F1ts%3D","updated":"2013-07-11 04:58:53.000000000","message":"I mean adding time.sleep(0) doesn\u0027t make current code worse.","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"}],"nova/tests/virt/powervm/test_powervm.py":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c9d982a0b55699011f298333ebf8f7876c5325a3","unresolved":false,"context_lines":[{"line_number":861,"context_line":"                         exp_md5sum)"},{"line_number":862,"context_line":"        self.assertEqual("},{"line_number":863,"context_line":"                  self.powervm_adapter._checksum_local_file(file_path, False),"},{"line_number":864,"context_line":"                         exp_md5sum)"},{"line_number":865,"context_line":"        os.remove(file_path)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"    def test_copy_image_file_from_host_with_wrong_checksum(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FrNE%3D","line":864,"updated":"2013-07-14 00:43:59.000000000","message":"The indenting on this block is a bit odd. Could the two lines above please line up?","commit_id":"3f79d2dd209bb90108096e32cc5a8de75a1f926d"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"17295f570d217b3d41e77443d24ffa68c12d7843","unresolved":false,"context_lines":[{"line_number":861,"context_line":"                         exp_md5sum)"},{"line_number":862,"context_line":"        self.assertEqual("},{"line_number":863,"context_line":"                  self.powervm_adapter._checksum_local_file(file_path, False),"},{"line_number":864,"context_line":"                         exp_md5sum)"},{"line_number":865,"context_line":"        os.remove(file_path)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"    def test_copy_image_file_from_host_with_wrong_checksum(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fqcw%3D","line":864,"in_reply_to":"AAAAP3%2F%2FrNE%3D","updated":"2013-07-15 01:38:04.000000000","message":"Done","commit_id":"3f79d2dd209bb90108096e32cc5a8de75a1f926d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc13489ac99a18c6db4be6add12160d0d753c19b","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        fake_noop \u003d lambda *args, **kwargs: None"},{"line_number":971,"context_line":"        fake_op \u003d self.powervm_adapter"},{"line_number":972,"context_line":"        self.stubs.Set(fake_op, \u0027run_vios_command\u0027, fake_noop)"},{"line_number":973,"context_line":"        self.stubs.Set(fake_op, \u0027_md5sum_remote_file\u0027, fake_md5sum_remote_file)"},{"line_number":974,"context_line":"        self.stubs.Set(fake_op, \u0027_checksum_local_file\u0027,"},{"line_number":975,"context_line":"                       fake_checksum_local_file)"},{"line_number":976,"context_line":"        self.stubs.Set(common, \u0027ftp_put_command\u0027, fake_noop)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FfSs%3D","line":973,"updated":"2013-07-17 14:24:09.000000000","message":"I need to undo this.","commit_id":"eba9cf2813426030881e5e6cca38e92f150d4583"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc13489ac99a18c6db4be6add12160d0d753c19b","unresolved":false,"context_lines":[{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        self.assertEqual(self.powervm_adapter._checksum_local_file(file_path),"},{"line_number":996,"context_line":"                         exp_md5sum)"},{"line_number":997,"context_line":"        self.assertEqual(self.powervm_adapter._checksum_local_file(file_path),"},{"line_number":998,"context_line":"                         exp_md5sum)"},{"line_number":999,"context_line":"        os.remove(file_path)"},{"line_number":1000,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FfSo%3D","line":997,"updated":"2013-07-17 14:24:09.000000000","message":"This is now redundant.","commit_id":"eba9cf2813426030881e5e6cca38e92f150d4583"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc13489ac99a18c6db4be6add12160d0d753c19b","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"        fake_noop \u003d lambda *args, **kwargs: None"},{"line_number":1012,"context_line":"        fake_op \u003d self.powervm_adapter"},{"line_number":1013,"context_line":"        self.stubs.Set(fake_op, \u0027run_vios_command_as_root\u0027, fake_noop)"},{"line_number":1014,"context_line":"        self.stubs.Set(fake_op, \u0027_md5sum_remote_file\u0027, fake_md5sum_remote_file)"},{"line_number":1015,"context_line":"        self.stubs.Set(fake_op, \u0027_checksum_local_file\u0027,"},{"line_number":1016,"context_line":"                       fake_checksum_local_file)"},{"line_number":1017,"context_line":"        self.stubs.Set(common, \u0027ftp_get_command\u0027, fake_noop)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAP3%2F%2FfSI%3D","line":1014,"updated":"2013-07-17 14:24:09.000000000","message":"Need to undo this.","commit_id":"eba9cf2813426030881e5e6cca38e92f150d4583"}],"nova/virt/powervm/blockdev.py":[{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"6fccec2f70e8d13594ad6bfed9e2111cd0aad104","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        # Calculate source image checksum"},{"line_number":413,"context_line":"        source_cksum \u003d self._checksum_local_file(source_path)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Give other threads a chance to run"},{"line_number":416,"context_line":"        time.sleep(0)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        comp_path \u003d os.path.join(remote_path, os.path.basename(source_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F6h8%3D","line":415,"updated":"2013-07-09 09:37:45.000000000","message":"Give a change to other threads to run","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cba44eb23c7694a3de3bf0939684d477646201fc","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        # Calculate source image checksum"},{"line_number":413,"context_line":"        source_cksum \u003d self._checksum_local_file(source_path)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Give other threads a chance to run"},{"line_number":416,"context_line":"        time.sleep(0)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        comp_path \u003d os.path.join(remote_path, os.path.basename(source_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F51Y%3D","line":415,"in_reply_to":"AAAAP3%2F%2F6h8%3D","updated":"2013-07-09 14:06:23.000000000","message":"Original comment seems fine.","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":2711,"name":"Zhang Hua","display_name":"Zhang Hua","email":"joshua.zhang@canonical.com","username":"zhhuabj"},"change_message_id":"6fccec2f70e8d13594ad6bfed9e2111cd0aad104","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        source_cksum \u003d self._checksum_local_file(source_path)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Give other threads a chance to run"},{"line_number":416,"context_line":"        time.sleep(0)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        comp_path \u003d os.path.join(remote_path, os.path.basename(source_path))"},{"line_number":419,"context_line":"        if comp_path.endswith(\".gz\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F6hs%3D","line":416,"updated":"2013-07-09 09:37:45.000000000","message":"can consider the async wrapper like NetworkInfoAsyncWrapper ?","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"7c317d522c20d68c01a1a6c47eeb32121b3e09d2","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        source_cksum \u003d self._checksum_local_file(source_path)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Give other threads a chance to run"},{"line_number":416,"context_line":"        time.sleep(0)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        comp_path \u003d os.path.join(remote_path, os.path.basename(source_path))"},{"line_number":419,"context_line":"        if comp_path.endswith(\".gz\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3N8%3D","line":416,"in_reply_to":"AAAAP3%2F%2F6hs%3D","updated":"2013-07-10 07:45:18.000000000","message":"Not sure , Is the NetworkInfoAsyncWrapper for a method  ? or can insert it into the place where we need it .  This patch follows what libvirt did ,see https://review.openstack.org/#/c/15607/","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cba44eb23c7694a3de3bf0939684d477646201fc","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    self.run_vios_command_as_root(cmd)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"            # Give other threads a chance to run"},{"line_number":444,"context_line":"            time.sleep(0)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            # Verify image file checksums match"},{"line_number":447,"context_line":"            output \u003d self._md5sum_remote_file(final_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F50k%3D","line":444,"updated":"2013-07-09 14:06:23.000000000","message":"You\u0027re basically doing the sleep whenever you are calculating a checksum or transferring a potentially large file via ftp.  Rather than put sleeps all over this code where those methods are called, I\u0027d move the thread sleep (yield) logic into the checksum/ftp methods and make them optional, e.g. add a new argument, yield\u003dFalse, or something like that, and then you can pass yield\u003dTrue from this method.  Then it\u0027s contained in a central place and can be re-used elsewhere if needed (and would clean up this code).","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"7c317d522c20d68c01a1a6c47eeb32121b3e09d2","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    self.run_vios_command_as_root(cmd)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"            # Give other threads a chance to run"},{"line_number":444,"context_line":"            time.sleep(0)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            # Verify image file checksums match"},{"line_number":447,"context_line":"            output \u003d self._md5sum_remote_file(final_path)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3OA%3D","line":444,"in_reply_to":"AAAAP3%2F%2F50k%3D","updated":"2013-07-10 07:45:18.000000000","message":"This patch follows what libvirt did ,see https://review.openstack.org/#/c/15607/ . This block issue ocurrs during opretions with a long period of time like copying  file . so other place doesn\u0027t need this .In order to show our purpose clearly ,we\u0027d better keep this in high level.","commit_id":"835511e3e02478e257686ef40d5fcc350eee039f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a89175da1cabcf5844777d90684d2cfd9008fa5","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Give other threads a chance to run"},{"line_number":416,"context_line":"        time.sleep(0)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        comp_path \u003d os.path.join(remote_path, os.path.basename(source_path))"},{"line_number":419,"context_line":"        if comp_path.endswith(\".gz\"):"},{"line_number":420,"context_line":"            uncomp_path \u003d os.path.splitext(comp_path)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F1tI%3D","line":417,"updated":"2013-07-10 16:07:18.000000000","message":"This doesn\u0027t really gain us much. The yield should be in the checksum loop itself.","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"7ef83697d9d2635bd6a30d2661aff5a38be34835","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        # Give other threads a chance to run"},{"line_number":416,"context_line":"        time.sleep(0)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        comp_path \u003d os.path.join(remote_path, os.path.basename(source_path))"},{"line_number":419,"context_line":"        if comp_path.endswith(\".gz\"):"},{"line_number":420,"context_line":"            uncomp_path \u003d os.path.splitext(comp_path)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2Fzx8%3D","line":417,"in_reply_to":"AAAAP3%2F%2F1tI%3D","updated":"2013-07-11 04:58:53.000000000","message":"yes, we can\u0027t switch to other thread  when caculate checkum .","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a89175da1cabcf5844777d90684d2cfd9008fa5","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    self.run_vios_command_as_root(cmd)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"            # Give other threads a chance to run"},{"line_number":444,"context_line":"            time.sleep(0)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            # Verify image file checksums match"},{"line_number":447,"context_line":"            output \u003d self._md5sum_remote_file(final_path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F1r8%3D","line":444,"updated":"2013-07-10 16:07:18.000000000","message":"Does ftplib not get monkeypatched by eventlet? I expect it is the major offender here, so perhaps we should look to see if there\u0027s a reasonable way to do that?","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"7ef83697d9d2635bd6a30d2661aff5a38be34835","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    self.run_vios_command_as_root(cmd)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"            # Give other threads a chance to run"},{"line_number":444,"context_line":"            time.sleep(0)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            # Verify image file checksums match"},{"line_number":447,"context_line":"            output \u003d self._md5sum_remote_file(final_path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2FzxY%3D","line":444,"in_reply_to":"AAAAP3%2F%2F1r8%3D","updated":"2013-07-11 04:58:53.000000000","message":"will check that .","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a89175da1cabcf5844777d90684d2cfd9008fa5","unresolved":false,"context_lines":[{"line_number":533,"context_line":"            source_chksum \u003d output.split(\u0027 \u0027)[0]"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        # Give other threads a chance to run"},{"line_number":536,"context_line":"        time.sleep(0)"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"        # Copy file to host"},{"line_number":539,"context_line":"        common.ftp_get_command(self.connection_data,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F1rE%3D","line":536,"updated":"2013-07-10 16:07:18.000000000","message":"Again, a single yield after the checksum above doesn\u0027t help much. I think we should be yielding effectively while waiting for the ssh command, so this is probably zero win, AFAICT.","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a89175da1cabcf5844777d90684d2cfd9008fa5","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                               local_file_path)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        # Give other threads a chance to run"},{"line_number":544,"context_line":"        time.sleep(0)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        # Calculate copied image checksum"},{"line_number":547,"context_line":"        dest_chksum \u003d self._checksum_local_file(local_file_path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F1qw%3D","line":544,"updated":"2013-07-10 16:07:18.000000000","message":"Same comment as the above ftp put.","commit_id":"b2909752893b3256a1c120ae94b73e3fa3f11006"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c9d982a0b55699011f298333ebf8f7876c5325a3","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        \"\"\"Calculate local file checksum."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        :param source_path: source file path"},{"line_number":392,"context_line":"        :param monopolize: if give other threads a chance to run."},{"line_number":393,"context_line":"        :returns: string -- the md5sum of local file"},{"line_number":394,"context_line":"        \"\"\""},{"line_number":395,"context_line":"        with open(source_path, \u0027r\u0027) as img_file:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2FrNA%3D","line":392,"updated":"2013-07-14 00:43:59.000000000","message":"...if false...\n\nI think I\u0027d prefer a name like \"yield\". Why would you ever turn yielding off though?","commit_id":"3f79d2dd209bb90108096e32cc5a8de75a1f926d"},{"author":{"_account_id":6722,"name":"ChangBo Guo(gcb)","email":"guochbo@cn.ibm.com","username":"guochbo"},"change_message_id":"17295f570d217b3d41e77443d24ffa68c12d7843","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        \"\"\"Calculate local file checksum."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        :param source_path: source file path"},{"line_number":392,"context_line":"        :param monopolize: if give other threads a chance to run."},{"line_number":393,"context_line":"        :returns: string -- the md5sum of local file"},{"line_number":394,"context_line":"        \"\"\""},{"line_number":395,"context_line":"        with open(source_path, \u0027r\u0027) as img_file:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2Fqc0%3D","line":392,"in_reply_to":"AAAAP3%2F%2FrNA%3D","updated":"2013-07-15 01:38:04.000000000","message":"yield is a keyword , maybe yieldthread is a good chance ,will turn on it by default.","commit_id":"3f79d2dd209bb90108096e32cc5a8de75a1f926d"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"8146583ceafd52a59b1ddeb8cef1e09cb8fd4c74","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        output \u003d self.run_vios_command_as_root(cmd)"},{"line_number":386,"context_line":"        return output[0]"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def _checksum_local_file(self, source_path, yield_thread\u003dTrue):"},{"line_number":389,"context_line":"        \"\"\"Calculate local file checksum."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        :param source_path: source file path"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2Fhf4%3D","line":388,"updated":"2013-07-17 00:29:55.000000000","message":"It seems this is set to False everywhere this is called in this file (2 places).  What\u0027s the point?","commit_id":"c6cc69069c278ca8fb2cae7b174c3f637b6aed4c"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"8146583ceafd52a59b1ddeb8cef1e09cb8fd4c74","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    self.run_vios_command_as_root(cmd)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"            # Give other threads a chance to run"},{"line_number":444,"context_line":"            time.sleep(0)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"            # Verify image file checksums match"},{"line_number":447,"context_line":"            output \u003d self._md5sum_remote_file(final_path)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2Fhf0%3D","line":444,"updated":"2013-07-17 00:29:55.000000000","message":"What does this accomplish?  This isn\u0027t in a loop doing work or anything ...","commit_id":"c6cc69069c278ca8fb2cae7b174c3f637b6aed4c"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"8146583ceafd52a59b1ddeb8cef1e09cb8fd4c74","unresolved":false,"context_lines":[{"line_number":533,"context_line":"            source_chksum \u003d output.split(\u0027 \u0027)[0]"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        # Give other threads a chance to run"},{"line_number":536,"context_line":"        time.sleep(0)"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"        # Copy file to host"},{"line_number":539,"context_line":"        common.ftp_get_command(self.connection_data,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2Fhfw%3D","line":536,"updated":"2013-07-17 00:29:55.000000000","message":"This also seems useless ...","commit_id":"c6cc69069c278ca8fb2cae7b174c3f637b6aed4c"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a26acf70eec04f7a687a916f1c01b29b6e3a86a8","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        output \u003d self.run_vios_command_as_root(cmd)"},{"line_number":386,"context_line":"        return output[0]"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def _checksum_local_file(self, source_path, yield_thread\u003dTrue):"},{"line_number":389,"context_line":"        \"\"\"Calculate local file checksum."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        :param source_path: source file path"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2Ffg4%3D","line":388,"updated":"2013-07-17 13:33:10.000000000","message":"Why is this an option if it\u0027s never set to False?","commit_id":"b5035109bfb39182160f5cd4017f164926e30a7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8c438a8c510613ec26bd84a719d4636c452d3f53","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        output \u003d self.run_vios_command_as_root(cmd)"},{"line_number":386,"context_line":"        return output[0]"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    def _checksum_local_file(self, source_path, yield_thread\u003dTrue):"},{"line_number":389,"context_line":"        \"\"\"Calculate local file checksum."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        :param source_path: source file path"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FfgA%3D","line":388,"in_reply_to":"AAAAP3%2F%2Ffg4%3D","updated":"2013-07-17 13:38:24.000000000","message":"Good point.  I thought there was a comment in a previous patch for why this should be toggled, but I couldn\u0027t find one so we should just remove it.","commit_id":"b5035109bfb39182160f5cd4017f164926e30a7c"}]}
