keith-turner closed pull request #187: fixes #185 No longer write to stdin
URL: https://github.com/apache/fluo-uno/pull/187
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/bin/impl/setup-accumulo.sh b/bin/impl/setup-accumulo.sh
index ec179ad..306dddc 100755
--- a/bin/impl/setup-accumulo.sh
+++ b/bin/impl/setup-accumulo.sh
@@ -30,7 +30,7 @@ pkill -f accumulo.start
 # stop if any command fails
 set -e
 
-echo >&0 "Setting up Apache Accumulo at $ACCUMULO_HOME"
+print_to_console "Setting up Apache Accumulo at $ACCUMULO_HOME"
 
 rm -rf "$INSTALL"/accumulo-*
 rm -f "$ACCUMULO_LOG_DIR"/*
diff --git a/bin/impl/setup-fluo-yarn.sh b/bin/impl/setup-fluo-yarn.sh
index ddcbafb..8bf0d31 100755
--- a/bin/impl/setup-fluo-yarn.sh
+++ b/bin/impl/setup-fluo-yarn.sh
@@ -28,7 +28,7 @@ if [[ $1 != "--no-deps" ]]; then
 fi
 
 if [[ -f "$DOWNLOADS/$FLUO_YARN_TARBALL" ]]; then
-  echo >&0 "Setting up Apache Fluo YARN launcher at $FLUO_YARN_HOME"
+  print_to_console "Setting up Apache Fluo YARN launcher at $FLUO_YARN_HOME"
   # Don't stop if pkills fail
   set +e
   pkill -f "fluo\.yarn"
@@ -53,6 +53,6 @@ if [[ -f "$DOWNLOADS/$FLUO_YARN_TARBALL" ]]; then
 
   stty sane
 else
-  echo >&0 "WARNING: Apache Fluo YARN launcher tarball '$FLUO_YARN_TARBALL' 
was not found in $DOWNLOADS."
-  echo >&0 "Apache Fluo YARN launcher will not be set up!"
+  print_to_console "WARNING: Apache Fluo YARN launcher tarball 
'$FLUO_YARN_TARBALL' was not found in $DOWNLOADS."
+  print_to_console "Apache Fluo YARN launcher will not be set up!"
 fi
diff --git a/bin/impl/setup-fluo.sh b/bin/impl/setup-fluo.sh
index 424a74d..bd487e8 100755
--- a/bin/impl/setup-fluo.sh
+++ b/bin/impl/setup-fluo.sh
@@ -28,7 +28,7 @@ if [[ $1 != "--no-deps" ]]; then
 fi
 
 if [[ -f "$DOWNLOADS/$FLUO_TARBALL" ]]; then
-  echo >&0 "Setting up Apache Fluo at $FLUO_HOME"
+  print_to_console "Setting up Apache Fluo at $FLUO_HOME"
   # Don't stop if pkills fail
   set +e
   pkill -f fluo.yarn
@@ -72,6 +72,6 @@ if [[ -f "$DOWNLOADS/$FLUO_TARBALL" ]]; then
 
   stty sane
 else
-  echo >&0 "WARNING: Apache Fluo tarball '$FLUO_TARBALL' was not found in 
$DOWNLOADS."
-  echo >&0 "Apache Fluo will not be set up!"
+  print_to_console "WARNING: Apache Fluo tarball '$FLUO_TARBALL' was not found 
in $DOWNLOADS."
+  print_to_console "Apache Fluo will not be set up!"
 fi
diff --git a/bin/impl/setup-hadoop.sh b/bin/impl/setup-hadoop.sh
index d8a81ff..483223e 100755
--- a/bin/impl/setup-hadoop.sh
+++ b/bin/impl/setup-hadoop.sh
@@ -24,7 +24,7 @@ pkill -f hadoop.yarn
 # stop if any command fails
 set -e
 
-echo >&0 "Setting up Apache Hadoop at $HADOOP_PREFIX"
+print_to_console "Setting up Apache Hadoop at $HADOOP_PREFIX"
 
 rm -rf "$INSTALL"/hadoop-*
 rm -f "$HADOOP_LOG_DIR"/*
diff --git a/bin/impl/setup-metrics.sh b/bin/impl/setup-metrics.sh
index e045ca1..b992a9e 100755
--- a/bin/impl/setup-metrics.sh
+++ b/bin/impl/setup-metrics.sh
@@ -17,11 +17,11 @@
 source "$UNO_HOME"/bin/impl/util.sh
 
 if [[ "$OSTYPE" == "darwin"* ]]; then
-  echo >&0 "The metrics services (InfluxDB and Grafana) are not supported on 
Mac OS X at this time."
+  print_to_console "The metrics services (InfluxDB and Grafana) are not 
supported on Mac OS X at this time."
   exit 1
 fi
 
-echo >&0 "Killing InfluxDB & Grafana (if running)"
+print_to_console "Killing InfluxDB & Grafana (if running)"
 pkill -f influxdb
 pkill -f grafana-server
 
@@ -35,36 +35,36 @@ verify_exist_hash "$GRAFANA_TARBALL" "$GRAFANA_HASH"
 INFLUXDB_TARBALL=influxdb-"$INFLUXDB_VERSION".tar.gz
 GRAFANA_TARBALL=grafana-"$GRAFANA_VERSION".tar.gz
 if [[ ! -f "$DOWNLOADS/build/$INFLUXDB_TARBALL" ]]; then
-  echo >&0 "InfluxDB tarball $INFLUXDB_TARBALL does not exists in 
downloads/build/"
+  print_to_console "InfluxDB tarball $INFLUXDB_TARBALL does not exists in 
downloads/build/"
   exit 1
 fi
 if [[ ! -f "$DOWNLOADS/build/$GRAFANA_TARBALL" ]]; then
-  echo >&0 "Grafana tarball $GRAFANA_TARBALL does not exists in 
downloads/build"
+  print_to_console "Grafana tarball $GRAFANA_TARBALL does not exists in 
downloads/build"
   exit 1
 fi
 
 if [[ ! -d "$FLUO_HOME" ]]; then
-  echo >&0 "Fluo must be installed before setting up metrics"
+  print_to_console "Fluo must be installed before setting up metrics"
   exit 1
 fi
 
 # stop if any command fails
 set -e
 
-echo >&0 "Removing previous versions of InfluxDB & Grafana"
+print_to_console "Removing previous versions of InfluxDB & Grafana"
 rm -rf "$INSTALL"/influxdb-*
 rm -rf "$INSTALL"/grafana-*
 
-echo >&0 "Remove previous log and data dirs"
+print_to_console "Remove previous log and data dirs"
 rm -f "$LOGS_DIR"/metrics/*
 rm -rf "$DATA_DIR"/influxdb
 mkdir -p "$LOGS_DIR"/metrics
 
-echo >&0 "Setting up metrics (influxdb + grafana)..."
+print_to_console "Setting up metrics (influxdb + grafana)..."
 tar xzf "$DOWNLOADS/build/$INFLUXDB_TARBALL" -C "$INSTALL"
 "$INFLUXDB_HOME"/bin/influxd config -config 
"$UNO_HOME"/conf/influxdb/influxdb.conf > "$INFLUXDB_HOME"/influxdb.conf
 if [[ ! -f "$INFLUXDB_HOME"/influxdb.conf ]]; then
-  echo >&0 "Failed to create $INFLUXDB_HOME/influxdb.conf"
+  print_to_console "Failed to create $INFLUXDB_HOME/influxdb.conf"
   exit 1
 fi
 $SED "s#DATA_DIR#$DATA_DIR#g" "$INFLUXDB_HOME"/influxdb.conf
@@ -79,7 +79,7 @@ cp "$FLUO_HOME"/contrib/grafana/* "$GRAFANA_HOME"/dashboards/
 cp "$UNO_HOME"/conf/grafana/accumulo-dashboard.json "$GRAFANA_HOME"/dashboards/
 "$GRAFANA_HOME"/bin/grafana-server -homepath="$GRAFANA_HOME" 2> /dev/null &
 
-echo >&0 "Configuring Fluo to send metrics to InfluxDB"
+print_to_console "Configuring Fluo to send metrics to InfluxDB"
 if [[ $FLUO_VERSION =~ ^1\.[0-1].*$ ]]; then
   FLUO_PROPS=$FLUO_HOME/conf/fluo.properties
 else
@@ -94,14 +94,14 @@ $SED "/fluo.metrics.reporter.graphite/d" "$FLUO_PROPS"
   echo "fluo.metrics.reporter.graphite.frequency=30"
 } >> "$FLUO_PROPS"
 
-echo >&0 "Configuring InfluxDB..."
+print_to_console "Configuring InfluxDB..."
 sleep 10
 "$INFLUXDB_HOME"/bin/influx -import -path 
"$FLUO_HOME"/contrib/influxdb/fluo_metrics_setup.txt
 
 # allow commands to fail
 set +e
 
-echo >&0 "Configuring Grafana..."
+print_to_console "Configuring Grafana..."
 
 sleep 5
 
@@ -112,11 +112,11 @@ function add_datasource() {
       --data-binary "$1"
     retcode=$?
     if [[ $retcode != 0 ]]; then
-      echo >&0 "Failed to add Grafana data source. Retrying in 5 sec.."
+      print_to_console "Failed to add Grafana data source. Retrying in 5 sec.."
       sleep 5
     fi
   done
-  echo >&0 ""
+  print_to_console ""
 }
 
 accumulo_data='{"name":"accumulo_metrics","type":"influxdb","url":"http://'
diff --git a/bin/impl/setup-spark.sh b/bin/impl/setup-spark.sh
index 3f015f9..46f8b5c 100755
--- a/bin/impl/setup-spark.sh
+++ b/bin/impl/setup-spark.sh
@@ -19,11 +19,11 @@ source "$UNO_HOME"/bin/impl/util.sh
 verify_exist_hash "$SPARK_TARBALL" "$SPARK_HASH"
 
 if [[ ! -d "$HADOOP_PREFIX" ]]; then
-  echo >&0 "Apache Hadoop needs to be setup before Apache Spark can be setup."
+  print_to_console "Apache Hadoop needs to be setup before Apache Spark can be 
setup."
   exit 1
 fi
 
-echo >&0 "Setting up Apache Spark at $SPARK_HOME"
+print_to_console "Setting up Apache Spark at $SPARK_HOME"
 
 pkill -f org.apache.spark.deploy.history.HistoryServer
 
diff --git a/bin/impl/setup-zookeeper.sh b/bin/impl/setup-zookeeper.sh
index 9a6ef37..c8526db 100755
--- a/bin/impl/setup-zookeeper.sh
+++ b/bin/impl/setup-zookeeper.sh
@@ -23,7 +23,7 @@ pkill -f QuorumPeerMain
 # stop if any command fails
 set -e
 
-echo >&0 "Setting up Apache ZooKeeper at $ZOOKEEPER_HOME"
+print_to_console "Setting up Apache ZooKeeper at $ZOOKEEPER_HOME"
 rm -rf "$INSTALL"/zookeeper-*
 rm -f "$ZOO_LOG_DIR"/*
 mkdir -p "$ZOO_LOG_DIR"
diff --git a/bin/impl/util.sh b/bin/impl/util.sh
index ac1a4fa..dcdc40e 100755
--- a/bin/impl/util.sh
+++ b/bin/impl/util.sh
@@ -19,7 +19,7 @@ function verify_exist_hash() {
   expected_hash=$(echo "${2// /}" | tr '[:upper:]' '[:lower:]')
 
   if [[ ! -f "$DOWNLOADS/$tarball" ]]; then
-    echo >&0 "The tarball $tarball does not exist in downloads/"
+    print_to_console "The tarball $tarball does not exist in downloads/"
     exit 1
   fi
 
@@ -30,14 +30,14 @@ function verify_exist_hash() {
     64) HASH_CMD='shasum -a 256' ;;
     128) HASH_CMD='shasum -a 512' ;;
     *)
-      echo >&0 "Expected checksum ($expected_hash) of $tarball is not an MD5, 
SHA1, SHA256, or SHA512 sum"
+      print_to_console "Expected checksum ($expected_hash) of $tarball is not 
an MD5, SHA1, SHA256, or SHA512 sum"
       exit 1
       ;;
   esac
   actual_hash=$($HASH_CMD "$DOWNLOADS/$tarball" | awk '{print $1}')
 
   if [[ "$actual_hash" != "$expected_hash" ]]; then
-    echo >&0 "The actual checksum ($actual_hash) of $tarball does not match 
the expected checksum ($expected_hash)"
+    print_to_console "The actual checksum ($actual_hash) of $tarball does not 
match the expected checksum ($expected_hash)"
     exit 1
   fi
 }
@@ -46,7 +46,7 @@ function verify_exist_hash() {
 function check_dirs() {
   for arg in "$@"; do
     if [[ ! -d "${!arg}" ]]; then
-      echo >&0 "$arg=${!arg} is not a valid directory. Please make sure it 
exists"
+      print_to_console "$arg=${!arg} is not a valid directory. Please make 
sure it exists"
       exit 1
     fi
   done
@@ -59,3 +59,20 @@ function run_setup_script() {
   shift
   "$UNO_HOME/bin/impl/setup-$SCRIP.sh" "$@" 1>"$L_DIR/$SCRIP.stdout" 
2>"$L_DIR/$SCRIP.stderr"
 }
+
+function save_console_fd {
+  if [[ -z "$UNO_CONSOLE_FD" ]]; then
+    # Allocate an unused file descriptor and make it dup stdout
+    # https://stackoverflow.com/a/41620630/7298689
+    exec {UNO_CONSOLE_FD}>&1
+    export UNO_CONSOLE_FD
+  fi
+}
+
+function print_to_console {
+  if [[ -z "$UNO_CONSOLE_FD" ]]; then
+    echo "$@"
+  else
+    echo "$@" >&${UNO_CONSOLE_FD}
+  fi
+}
diff --git a/bin/uno b/bin/uno
index 94c74ab..5389b14 100755
--- a/bin/uno
+++ b/bin/uno
@@ -42,6 +42,7 @@ fetch)
 setup)
   [[ -n $LOGS_DIR ]] && rm -f "$LOGS_DIR"/setup/*.std{out,err}
   echo "Beginning setup (detailed logs in $LOGS_DIR/setup)..."
+  save_console_fd
   case "$2" in
     all)
       run_setup_script Fluo


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to