ctdb-tools: Avoid filtering stderr when onnode not running in parallel
authorMartin Schwenke <martin@meltin.net>
Tue, 17 Apr 2018 22:05:25 +0000 (08:05 +1000)
committerAmitay Isaacs <amitay@samba.org>
Fri, 27 Apr 2018 04:53:16 +0000 (06:53 +0200)
stderr_filter() only does anything useful when running in
parallel (i.e. with the -p option).  So, simplify the non-parallel
case by not using stderr_filter().

As a side-effect, this fixes an issue introduced in commit
85a4375788d8ef8345ec390807f18299abdadb20 where local daemon tests
would hang when trying to start daemons with VALGRIND set (to a
valgrind command that does not use --log-file).  This is because
valgrind would keep stderr open for its output so the pipeline
involving stderr_filter() would never complete.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/tools/onnode

index c3ebfea71377306bb3df4d060c06d9646517b0fe..6104d615694e3432764872f0eb1426ba919b4006 100755 (executable)
@@ -368,13 +368,8 @@ for n in $nodes ; do
                if $verbose ; then
                        echo >&2 ; echo ">> NODE: $n <<" >&2
                fi
-
                {
-                       exec 3>&1
-                       {
-                               $ssh_cmd "$n" "$command" 3>&- |
-                                       stdout_filter >&3
-                       } 2>&1 | stderr_filter
+                       $ssh_cmd "$n" "$command" | stdout_filter
                } || retcode=$?
        fi
 done