diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 10c6d76319..2f17f2288a 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -355,6 +355,9 @@ Trunk (Unreleased) HADOOP-11298. slaves.sh and stop-all.sh are missing slashes (aw) + HADOOP-11296. hadoop-daemons.sh throws 'host1: bash: host3: + command not found...' (vinayakumarb) + OPTIMIZATIONS HADOOP-7761. Improve the performance of raw comparisons. (todd) diff --git a/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh b/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh index b5d4b1c12b..2b56634a0f 100644 --- a/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh +++ b/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh @@ -273,6 +273,12 @@ function hadoop_connect_to_hosts # moral of the story: just use pdsh. export -f hadoop_actual_ssh export HADOOP_SSH_OPTS + + # xargs is used with option -I to replace the placeholder in arguments + # list with each hostname read from stdin/pipe. But it consider one + # line as one argument while reading from stdin/pipe. So place each + # hostname in different lines while passing via pipe. + SLAVE_NAMES=$(echo "$SLAVE_NAMES" | tr ' ' '\n' ) echo "${SLAVE_NAMES}" | \ xargs -n 1 -P"${HADOOP_SSH_PARALLEL}" \ -I {} bash -c -- "hadoop_actual_ssh {} ${params}"