)]}'
{"cinder/volume/drivers/nec/cli.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1d57dbe402991fd477e9f13c559436104b7e5b1b","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            while 1:"},{"line_number":154,"context_line":"                select.select([channel], [], [])"},{"line_number":155,"context_line":"                if channel.recv_ready():"},{"line_number":156,"context_line":"                    _out.append(utils.convert_str(channel.recv(4096)))"},{"line_number":157,"context_line":"                    continue"},{"line_number":158,"context_line":"                if channel.recv_stderr_ready():"},{"line_number":159,"context_line":"                    _err.append(utils.convert_str(channel.recv_stderr(4096)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_6901a406","line":156,"updated":"2019-08-26 19:40:35.000000000","message":"If this is converting bytes to strings, I think you need to do it around line 166 after all of the data has been received rather than per-chunk here.\n\nThis would break if there happens to be a multi-byte unicode character that spans bytes 4095-4099 etc., where only part of it is received when this convert_str() call is made.","commit_id":"10f3eecb3fddf065fd2e195c83978347b17e4cb2"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"fd1814f02a1415f9ce1ada2891ce16faf929693d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            while 1:"},{"line_number":154,"context_line":"                select.select([channel], [], [])"},{"line_number":155,"context_line":"                if channel.recv_ready():"},{"line_number":156,"context_line":"                    _out.append(utils.convert_str(channel.recv(4096)))"},{"line_number":157,"context_line":"                    continue"},{"line_number":158,"context_line":"                if channel.recv_stderr_ready():"},{"line_number":159,"context_line":"                    _err.append(utils.convert_str(channel.recv_stderr(4096)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_48905b97","line":156,"in_reply_to":"7faddb67_6901a406","updated":"2019-08-27 07:52:04.000000000","message":"Done","commit_id":"10f3eecb3fddf065fd2e195c83978347b17e4cb2"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"657917544df467ab7def9770b111aa7e5c3a3883","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            stdin, stdout, stderr \u003d ssh.exec_command(command)"},{"line_number":150,"context_line":"            stdin.close()"},{"line_number":151,"context_line":"            channel \u003d stdout.channel"},{"line_number":152,"context_line":"            _out, _err \u003d [], []"},{"line_number":153,"context_line":"            while 1:"},{"line_number":154,"context_line":"                select.select([channel], [], [])"},{"line_number":155,"context_line":"                if channel.recv_ready():"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_a7e78bac","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":27},"updated":"2019-08-29 13:58:51.000000000","message":"To consider for a later patch: why make these lists?","commit_id":"c6c26a56a214337e82dac78aae6291b42ad22fee"},{"author":{"_account_id":28403,"name":"Naoki Saito","email":"nasaito@nec.com","username":"n-saito"},"change_message_id":"67c7026738322e4e31ab6baffe3cedb00ab5ab62","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            stdin, stdout, stderr \u003d ssh.exec_command(command)"},{"line_number":150,"context_line":"            stdin.close()"},{"line_number":151,"context_line":"            channel \u003d stdout.channel"},{"line_number":152,"context_line":"            _out, _err \u003d [], []"},{"line_number":153,"context_line":"            while 1:"},{"line_number":154,"context_line":"                select.select([channel], [], [])"},{"line_number":155,"context_line":"                if channel.recv_ready():"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_338c2f7f","line":152,"range":{"start_line":152,"start_character":25,"end_line":152,"end_character":27},"in_reply_to":"7faddb67_a7e78bac","updated":"2019-08-30 10:26:20.000000000","message":"I will improve it in the next patch https://review.opendev.org/#/c/668088/ .","commit_id":"c6c26a56a214337e82dac78aae6291b42ad22fee"}]}
