Author: rvs
Date: Sun Oct 23 00:29:54 2011
New Revision: 1187832

URL: http://svn.apache.org/viewvc?rev=1187832&view=rev
Log:
BIGTOP-140. need to workaround HDFS-1943

Modified:
    incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl
    
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl
    
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse

Modified: 
incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl
URL: 
http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl?rev=1187832&r1=1187831&r2=1187832&view=diff
==============================================================================
--- incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl 
(original)
+++ incubator/bigtop/trunk/bigtop-packages/src/deb/hadoop/service-init.d.tpl 
Sun Oct 23 00:29:54 2011
@@ -143,11 +143,27 @@ hadoop_stop_pidfile() {
 }
 
 start() {
-    $HADOOP_HOME/bin/hadoop-daemon.sh start @HADOOP_DAEMON@ $DAEMON_FLAGS
 
     if [ "@HADOOP_DAEMON@" = "datanode" ]; then
+      # The following needs to be removed once HDFS-1943 gets finally put to 
rest.
+      # The logic of this ugly hack is this: IFF we do NOT have jsvc installed 
it is
+      # guaranteed that we can NOT be running in a secure mode and thus we 
need to
+      # workaround HDFS-1943 (start as non-root). As soon as jsvc gets 
installed
+      # we are assuming a secure installation and starting a data node as root.
+      # This leaves 2 corner cases:
+      #    1. HADOOP_DATANODE_USER being set to root
+      #    2. jsvc is installed but Hadoop is configures to run in an unsecure 
mode
+      # Both will currently fail
+      if [ -f $HADOOP_HOME/libexec/jsvc.amd64 -o -f 
$HADOOP_HOME/libexec/jsvc.i386 ] ; then
+         DN_USER=root
+      else
+         DN_USER=$HADOOP_DATANODE_USER
+      fi
+      su -s /bin/bash $DN_USER -c "$HADOOP_HOME/bin/hadoop-daemon.sh start 
@HADOOP_DAEMON@ $DAEMON_FLAGS"
       # Some processes are slow to start
       sleep $SLEEP_TIME
+    else
+      $HADOOP_HOME/bin/hadoop-daemon.sh start @HADOOP_DAEMON@ $DAEMON_FLAGS
     fi
 
 }

Modified: 
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl
URL: 
http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl?rev=1187832&r1=1187831&r2=1187832&view=diff
==============================================================================
--- 
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl 
(original)
+++ 
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl 
Sun Oct 23 00:29:54 2011
@@ -43,14 +43,31 @@ SLEEP_TIME=5
 
 start() {
   echo -n $"Starting $desc (hadoop-@HADOOP_DAEMON@): "
-  daemon @HADOOP_COMMON_ROOT@/bin/hadoop-daemon.sh --config 
"@HADOOP_CONF_DIR@" start @HADOOP_DAEMON@ $DAEMON_FLAGS
-  RETVAL=$?
 
   if [ "@HADOOP_DAEMON@" = "datanode" ]; then
+    # The following needs to be removed once HDFS-1943 gets finally put to 
rest.
+    # The logic of this ugly hack is this: IFF we do NOT have jsvc installed 
it is
+    # guaranteed that we can NOT be running in a secure mode and thus we need 
to
+    # workaround HDFS-1943 (start as non-root). As soon as jsvc gets installed
+    # we are assuming a secure installation and starting a data node as root.
+    # This leaves 2 corner cases:
+    #    1. HADOOP_DATANODE_USER being set to root
+    #    2. jsvc is installed but Hadoop is configures to run in an unsecure 
mode
+    # Both will currently fail
+    if [ -f $HADOOP_HOME/libexec/jsvc.amd64 -o -f 
$HADOOP_HOME/libexec/jsvc.i386 ] ; then
+       DN_USER=root
+    else
+       DN_USER=$HADOOP_DATANODE_USER
+    fi
+    su -s /bin/bash $DN_USER -c "@HADOOP_COMMON_ROOT@/bin/hadoop-daemon.sh 
--config '@HADOOP_CONF_DIR@' start @HADOOP_DAEMON@ $DAEMON_FLAGS"
+
     # Some processes are slow to start
     sleep $SLEEP_TIME
     checkstatus
     RETVAL=$?
+  else
+    daemon @HADOOP_COMMON_ROOT@/bin/hadoop-daemon.sh --config 
"@HADOOP_CONF_DIR@" start @HADOOP_DAEMON@ $DAEMON_FLAGS
+    RETVAL=$?
   fi
 
   [ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE

Modified: 
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse
URL: 
http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse?rev=1187832&r1=1187831&r2=1187832&view=diff
==============================================================================
--- 
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse
 (original)
+++ 
incubator/bigtop/trunk/bigtop-packages/src/rpm/hadoop/SOURCES/hadoop-init.tmpl.suse
 Sun Oct 23 00:29:54 2011
@@ -65,14 +65,31 @@ start() {
   [ -x $exec ] || exit $ERROR_PROGRAM_NOT_INSTALLED
   [ -f $config ] || exit $ERROR_PROGRAM_NOT_CONFIGURED
   log_success_msg "Starting $desc (hadoop-@HADOOP_DAEMON@): "
-  start_daemon $EXEC_PATH --config "$CONFIG_PATH" start @HADOOP_DAEMON@ 
$DAEMON_FLAGS
-  RETVAL=$?
 
   if [ "@HADOOP_DAEMON@" = "datanode" ]; then
+    # The following needs to be removed once HDFS-1943 gets finally put to 
rest.
+    # The logic of this ugly hack is this: IFF we do NOT have jsvc installed 
it is
+    # guaranteed that we can NOT be running in a secure mode and thus we need 
to
+    # workaround HDFS-1943 (start as non-root). As soon as jsvc gets installed
+    # we are assuming a secure installation and starting a data node as root.
+    # This leaves 2 corner cases:
+    #    1. HADOOP_DATANODE_USER being set to root
+    #    2. jsvc is installed but Hadoop is configures to run in an unsecure 
mode
+    # Both will currently fail
+    if [ -f $HADOOP_HOME/libexec/jsvc.amd64 -o -f 
$HADOOP_HOME/libexec/jsvc.i386 ] ; then
+       DN_USER=root
+    else
+       DN_USER=$HADOOP_DATANODE_USER
+    fi
+    su -s /bin/bash $DN_USER -c "$EXEC_PATH --config '$CONFIG_PATH' start 
@HADOOP_DAEMON@ $DAEMON_FLAGS"
+
     # Some processes are slow to start
     sleep $SLEEP_TIME
     checkstatusofproc
     RETVAL=$?
+  else
+    start_daemon $EXEC_PATH --config "$CONFIG_PATH" start @HADOOP_DAEMON@ 
$DAEMON_FLAGS
+    RETVAL=$?
   fi
 
   [ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE


Reply via email to