)]}'
{"tempest/tests/test_wrappers.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"1aea70e71e2b7cf7a3bedfba3c1bee78fb30d22e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        p \u003d subprocess.Popen("},{"line_number":63,"context_line":"            \"bash %s\" % cmd, shell\u003dTrue,"},{"line_number":64,"context_line":"            stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"},{"line_number":65,"context_line":"        # wait in the general case is dangerous, however the amount of"},{"line_number":66,"context_line":"        # data coming back on those pipes is small enough it shouldn\u0027t be"},{"line_number":67,"context_line":"        # a problem."},{"line_number":68,"context_line":"        p.communicate()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_1b5efa45","line":65,"updated":"2014-09-22 23:16:06.000000000","message":"You probably can remove this comment since you\u0027re not using wait anymore","commit_id":"26c39af0f34487c6cf35543d73e140cc484c4d72"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"17255d27e686bb4363a76d0461bfbd4e00180698","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        p \u003d subprocess.Popen("},{"line_number":63,"context_line":"            \"bash %s\" % cmd, shell\u003dTrue,"},{"line_number":64,"context_line":"            stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"},{"line_number":65,"context_line":"        # wait in the general case is dangerous, however the amount of"},{"line_number":66,"context_line":"        # data coming back on those pipes is small enough it shouldn\u0027t be"},{"line_number":67,"context_line":"        # a problem."},{"line_number":68,"context_line":"        p.communicate()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_5b2fa2a1","line":65,"in_reply_to":"da9df570_1b5efa45","updated":"2014-09-22 23:19:57.000000000","message":"good catch.","commit_id":"26c39af0f34487c6cf35543d73e140cc484c4d72"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"0edc5970311e486befc514c1818b29e2808e1af2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        p \u003d subprocess.Popen("},{"line_number":63,"context_line":"            \"bash %s\" % cmd, shell\u003dTrue,"},{"line_number":64,"context_line":"            stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"},{"line_number":65,"context_line":"        p.communicate()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self.assertEqual("},{"line_number":68,"context_line":"            p.returncode, expected,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_72d47647","line":65,"updated":"2014-09-23 13:22:11.000000000","message":"This is causing the unit tests to fail with ValueError: I/O operation on closed file\n\nhttp://logs.openstack.org/80/123280/2/check/gate-tempest-python27/dc1406c/console.html#_2014-09-23_03_13_24_183\n\nI think it might be related to calling read() on the pipe below. It looks like communicate closes the pipe fd when it finishes executing. So I think you need to change this line to:\n\nout, err \u003d p.communicate()\n\nThen use out and err for the fail message below instead of calling read on the subprocess pipes.","commit_id":"3e8761028abc80f690c26c17821dae94e102087e"}]}
