diff options
Diffstat (limited to 'pkgs/tools/filesystems/glusterfs/glusterfs-glusterfind-log-remote-node_cmd-error.patch')
-rw-r--r-- | pkgs/tools/filesystems/glusterfs/glusterfs-glusterfind-log-remote-node_cmd-error.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/pkgs/tools/filesystems/glusterfs/glusterfs-glusterfind-log-remote-node_cmd-error.patch b/pkgs/tools/filesystems/glusterfs/glusterfs-glusterfind-log-remote-node_cmd-error.patch new file mode 100644 index 000000000000..8bc00fdbf75c --- /dev/null +++ b/pkgs/tools/filesystems/glusterfs/glusterfs-glusterfind-log-remote-node_cmd-error.patch @@ -0,0 +1,49 @@ +From 92a6b84a37e7e2e0ec0655ca45cedb64ab72080e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= <mail@nh2.me> +Date: Fri, 8 Sep 2017 02:40:01 +0200 +Subject: [PATCH] glusterfind: Log remote stderr on `node_cmd` error. + +The problem of lost stderr was introduced in +commit feea851fad4f89b48bfe89fe3b75250cc7bd6501. + +Change-Id: Ic98f9bc9682ae3bd9c3ebea3855667fc8ba2843d +--- + tools/glusterfind/src/main.py | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py +index c125f970a..6fffce4b3 100644 +--- a/tools/glusterfind/src/main.py ++++ b/tools/glusterfind/src/main.py +@@ -75,12 +75,27 @@ def node_cmd(host, host_uuid, task, cmd, args, opts): + cmd = ["ssh", + "-oNumberOfPasswordPrompts=0", + "-oStrictHostKeyChecking=no", ++ # We force TTY allocation (-t -t) so that Ctrl+C is handed ++ # through; see: ++ # https://bugzilla.redhat.com/show_bug.cgi?id=1382236 ++ # Note that this turns stderr of the remote `cmd` ++ # into stdout locally. + "-t", + "-t", + "-i", pem_key_path, + "root@%s" % host] + cmd + +- execute(cmd, exit_msg="%s - %s failed" % (host, task), logger=logger) ++ (returncode, err, out) = execute(cmd, logger=logger) ++ if returncode != 0: ++ # Because the `-t -t` above turns the remote stderr into ++ # local stdout, we need to log both stderr and stdout ++ # here to print all error messages. ++ fail("%s - %s failed; stdout (including remote stderr):\n" ++ "%s\n" ++ "stderr:\n" ++ "%s" % (host, task, out, err), ++ returncode, ++ logger=logger) + + if opts.get("copy_outfile", False) and not localdir: + cmd_copy = ["scp", +-- +2.12.0 + |