)]}'
{"oslo_rootwrap/jsonrpc.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c5b4f9b28045f88d92a81343f8f20777e67f9f80","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        # and are result of Popen.communicate()"},{"line_number":32,"context_line":"        if isinstance(o, bytes):"},{"line_number":33,"context_line":"            return {\"__bytes__\": base64.b64encode(o).decode(\u0027ascii\u0027)}"},{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bd6eb3fd","line":34,"updated":"2019-10-09 14:30:43.000000000","message":"I guess something went wrong previously with this comment...","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"dfb52799936b3047d2bb2dd2a1cf45420752043e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        # and are result of Popen.communicate()"},{"line_number":32,"context_line":"        if isinstance(o, bytes):"},{"line_number":33,"context_line":"            return {\"__bytes__\": base64.b64encode(o).decode(\u0027ascii\u0027)}"},{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_beaea67e","line":34,"in_reply_to":"3fa7e38b_3e8e3679","updated":"2019-10-09 18:31:30.000000000","message":"+1 to modify this comment to avoid confusing","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"acde6b2118329288362bf216b52a74df3e4e5f25","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        # and are result of Popen.communicate()"},{"line_number":32,"context_line":"        if isinstance(o, bytes):"},{"line_number":33,"context_line":"            return {\"__bytes__\": base64.b64encode(o).decode(\u0027ascii\u0027)}"},{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_3e8e3679","line":34,"in_reply_to":"3fa7e38b_bd6eb3fd","updated":"2019-10-09 18:14:09.000000000","message":"I think it\u0027s referring to both the NoFilterMatched and FilterMatchNotExecutable exceptions below.\n\nIn light of this change, it\u0027s probably better to drop the \"two\" and have it say \"Handle exception types...\"","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9fdda171d707273b672544e24d164ac5acd503e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        # and are result of Popen.communicate()"},{"line_number":32,"context_line":"        if isinstance(o, bytes):"},{"line_number":33,"context_line":"            return {\"__bytes__\": base64.b64encode(o).decode(\u0027ascii\u0027)}"},{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5ba54446","line":34,"in_reply_to":"3fa7e38b_bd6eb3fd","updated":"2019-10-09 17:58:08.000000000","message":"The point is testing in non-daemon mode, this works. But in daemon mode, using the json serializer, something happens.","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"acde6b2118329288362bf216b52a74df3e4e5f25","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"},{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_be7a2674","line":37,"updated":"2019-10-09 18:14:09.000000000","message":"Based on the bug report, I wonder if FilterMatchNotExecutable would be a better exception to raise here. It sounds like the problem is caused by a missing executable, which makes this exception more accurate than saying no filter was matched.","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"73a50536ef19961c787948bc9dfa06e8e33cc7b5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"},{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_8f012f09","line":37,"in_reply_to":"3fa7e38b_7eccae69","updated":"2019-10-10 09:47:15.000000000","message":"Actually I have the same problem when:\n- The executable is not in the filters\n- The executable is allowed but does not exist.\n\nI doesn\u0027t matter if the command is execute inside a namespace or in the kernel namespace. The error is the same:\n  TypeError: Object of type \u0027ValueError\u0027 is not JSON serializable\n\nI don\u0027t know where in \"json\" library the error reported [1] is happening. But we have the same exception in both cases.\n\n[1] ValueError(\"I/O operation on closed file\")","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"dfb52799936b3047d2bb2dd2a1cf45420752043e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        # Handle two exception types relevant to command execution"},{"line_number":35,"context_line":"        if isinstance(o, (wrapper.NoFilterMatched, ValueError)):"},{"line_number":36,"context_line":"            return {\"__exception__\": \"NoFilterMatched\"}"},{"line_number":37,"context_line":"        elif isinstance(o, wrapper.FilterMatchNotExecutable):"},{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7eccae69","line":37,"in_reply_to":"3fa7e38b_be7a2674","updated":"2019-10-09 18:31:30.000000000","message":"I agree","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c5b4f9b28045f88d92a81343f8f20777e67f9f80","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"},{"line_number":41,"context_line":"        # client side"},{"line_number":42,"context_line":"        else:"},{"line_number":43,"context_line":"            return super(RpcJSONEncoder, self).default(o)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_08054711","line":41,"updated":"2019-10-09 14:30:43.000000000","message":"Are you sure we don\u0027t want to handle this case on the client side through the `else` statement below?","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"83f0da000636ee1cfda16f768baf476d099f3fce","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"},{"line_number":41,"context_line":"        # client side"},{"line_number":42,"context_line":"        else:"},{"line_number":43,"context_line":"            return super(RpcJSONEncoder, self).default(o)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_526dbec9","line":41,"in_reply_to":"3fa7e38b_03b085dc","updated":"2019-10-16 14:50:31.000000000","message":"Yes, I agree with this. I\u0027m having problems debugging this (I need to join to the root process) and then execute then try to execute a wrong command. Maybe I\u0027ll see this JSON error.\n\nHow do you usually debug this?","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9fdda171d707273b672544e24d164ac5acd503e5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"},{"line_number":41,"context_line":"        # client side"},{"line_number":42,"context_line":"        else:"},{"line_number":43,"context_line":"            return super(RpcJSONEncoder, self).default(o)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_fbbe7063","line":41,"in_reply_to":"3fa7e38b_08054711","updated":"2019-10-09 17:58:08.000000000","message":"We can be more explicit: if the ValueError exception is because of \"I/O operation on closed file\", we can check this branch.\n\nI still can\u0027t find where in json library we have this problem.","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"c2ee87ecb65c23c920e1a9b3bf855ee3fe3d8f73","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            return {\"__exception__\": \"FilterMatchNotExecutable\","},{"line_number":39,"context_line":"                    \"match\": o.match}"},{"line_number":40,"context_line":"        # Other errors will fail to pass JSON encoding and will be visible on"},{"line_number":41,"context_line":"        # client side"},{"line_number":42,"context_line":"        else:"},{"line_number":43,"context_line":"            return super(RpcJSONEncoder, self).default(o)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_03b085dc","line":41,"in_reply_to":"3fa7e38b_fbbe7063","updated":"2019-10-14 15:54:32.000000000","message":"We should definitely be more explicit... I suspect ValueError can come from all corners of the JSON decoding libraries.","commit_id":"16d1503d2bc93c2c652f44ba85e36762241d050c"}]}
