You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by kr...@apache.org on 2019/08/22 12:29:14 UTC

[knox] branch master updated: KNOX-1957 - Optional APP_JAVA_OPTS are handled properly (#131)

This is an automated email from the ASF dual-hosted git repository.

krisden pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new cc27ffe  KNOX-1957 - Optional APP_JAVA_OPTS are handled properly (#131)
cc27ffe is described below

commit cc27ffebf8b41895612526246f7c3189bcdf9e1f
Author: Sandor Molnar <sm...@apache.org>
AuthorDate: Thu Aug 22 14:29:10 2019 +0200

    KNOX-1957 - Optional APP_JAVA_OPTS are handled properly (#131)
---
 gateway-release-common/home/bin/knox-functions.sh | 37 +++++++++++++++++++++--
 gateway-release/home/bin/gateway.sh               |  8 ++---
 gateway-release/home/bin/knoxcli.sh               | 37 +++++++++++++++++++----
 gateway-release/home/bin/ldap.sh                  |  9 ++----
 gateway-shell-release/home/bin/knoxshell.sh       | 33 ++++++++++++++++++--
 5 files changed, 103 insertions(+), 21 deletions(-)

diff --git a/gateway-release-common/home/bin/knox-functions.sh b/gateway-release-common/home/bin/knox-functions.sh
index c528ca6..b48e967 100644
--- a/gateway-release-common/home/bin/knox-functions.sh
+++ b/gateway-release-common/home/bin/knox-functions.sh
@@ -38,6 +38,9 @@ APP_KILL_WAIT_TIME=10
 DEFAULT_JAVA_LIB_PATH="-Djava.library.path=$APP_HOME_DIR/ext/native"
 APP_JAVA_LIB_PATH=${KNOX_GATEWAY_JAVA_LIB_PATH:-$DEFAULT_JAVA_LIB_PATH}
 
+# JAVA options used by the JVM
+declare -a APP_JAVA_OPTS
+
 
 ############################
 ##### common functions #####
@@ -132,6 +135,34 @@ function printEnv() {
     fi
 }
 
+function addAppJavaOpts {
+    options_array=$(echo "${1}" | tr " " "\n")
+    for option in ${options_array}
+    do
+       APP_JAVA_OPTS+=("$option")
+    done
+}
+
+function buildAppJavaOpts {
+    if [ -n "$APP_MEM_OPTS" ]; then
+      addAppJavaOpts "${APP_MEM_OPTS}"
+    fi
+
+    if [ -n "$APP_LOG_OPTS" ]; then
+      addAppJavaOpts "${APP_LOG_OPTS}"
+    fi
+
+    if [ -n "$APP_DBG_OPTS" ]; then
+      addAppJavaOpts "${APP_DBG_OPTS}"
+    fi
+
+    if [ -n "$APP_JAVA_LIB_PATH" ]; then
+      addAppJavaOpts "${APP_JAVA_LIB_PATH}"
+    fi
+
+    # echo "APP_JAVA_OPTS =" "${APP_JAVA_OPTS[@]}"
+}
+
 function appIsRunning {
    if [ "$1" -eq 0 ]; then return 0; fi
 
@@ -169,8 +200,10 @@ function getPID {
 }
 
 function appStart {
+   buildAppJavaOpts
+
    if [ "$APP_RUNNING_IN_FOREGROUND" == true ]; then
-      exec "$JAVA" "$APP_JAVA_OPTS" -jar "$APP_JAR" "$@"
+      exec "$JAVA" "${APP_JAVA_OPTS[@]}" -jar "$APP_JAR" "$@"
    else
       if getPID; then
          printf "%s is already running with PID %d.\n" "$APP_LABEL" "$APP_PID"
@@ -181,7 +214,7 @@ function appStart {
 
       rm -f "$APP_PID_FILE"
 
-      nohup "$JAVA" "$APP_JAVA_OPTS" -jar "$APP_JAR" "$@" >>"$APP_OUT_FILE" 2>>"$APP_ERR_FILE" & printf %s $!>"$APP_PID_FILE" || exit 1
+      nohup "$JAVA" "${APP_JAVA_OPTS[@]}" -jar "$APP_JAR" "$@" >>"$APP_OUT_FILE" 2>>"$APP_ERR_FILE" & printf %s $!>"$APP_PID_FILE" || exit 1
 
       ##give a second to the JVM to start and run validation
       sleep 1
diff --git a/gateway-release/home/bin/gateway.sh b/gateway-release/home/bin/gateway.sh
index a751705..9065cd9 100755
--- a/gateway-release/home/bin/gateway.sh
+++ b/gateway-release/home/bin/gateway.sh
@@ -48,13 +48,13 @@ DEFAULT_APP_LOG_DIR="$APP_HOME_DIR/logs"
 APP_LOG_DIR=${KNOX_GATEWAY_LOG_DIR:-$DEFAULT_APP_LOG_DIR}
 
 # The app's logging options
-APP_LOG_OPTS="$KNOX_GATEWAY_LOG_OPTS"
+export APP_LOG_OPTS="$KNOX_GATEWAY_LOG_OPTS"
 
 # The app's memory options
-APP_MEM_OPTS="$KNOX_GATEWAY_MEM_OPTS"
+export APP_MEM_OPTS="$KNOX_GATEWAY_MEM_OPTS"
 
 # The app's debugging options
-APP_DBG_OPTS="$KNOX_GATEWAY_DBG_OPTS"
+export APP_DBG_OPTS="$KNOX_GATEWAY_DBG_OPTS"
 
 # Name of PID file
 DEFAULT_APP_PID_DIR="$APP_HOME_DIR/pids"
@@ -68,8 +68,6 @@ export APP_ERR_FILE="$APP_LOG_DIR/$APP_NAME.err"
 DEFAULT_APP_RUNNING_IN_FOREGROUND="$GATEWAY_SERVER_RUN_IN_FOREGROUND"
 export APP_RUNNING_IN_FOREGROUND=${KNOX_GATEWAY_RUNNING_IN_FOREGROUND:-$DEFAULT_APP_RUNNING_IN_FOREGROUND}
 
-export APP_JAVA_OPTS="$APP_JAVA_LIB_PATH $APP_MEM_OPTS $APP_DBG_OPTS $APP_LOG_OPTS"
-
 function main {
    checkJava
 
diff --git a/gateway-release/home/bin/knoxcli.sh b/gateway-release/home/bin/knoxcli.sh
index 7d6e70d..2bb3208 100755
--- a/gateway-release/home/bin/knoxcli.sh
+++ b/gateway-release/home/bin/knoxcli.sh
@@ -32,16 +32,41 @@ APP_JAR="$APP_BIN_DIR/knoxcli.jar"
 # Source common functions
 . "$APP_BIN_DIR"/knox-functions.sh
 
-APP_JAVA_OPTS="$APP_JAVA_LIB_PATH $KNOX_CLI_MEM_OPTS $KNOX_CLI_DBG_OPTS $KNOX_CLI_LOG_OPTS"
+# JAVA options used by the JVM
+declare -a APP_JAVA_OPTS
 
-function main {
-   checkJava
+function addAppJavaOpts {
+    options_array=$(echo "${1}" | tr " " "\n")
+    for option in ${options_array}
+    do
+       APP_JAVA_OPTS+=("$option")
+    done
+}
+
+function buildAppJavaOpts {
+    if [ -n "$KNOX_CLI_MEM_OPTS" ]; then
+      addAppJavaOpts "${KNOX_CLI_MEM_OPTS}"
+    fi
+
+    if [ -n "$KNOX_CLI_LOG_OPTS" ]; then
+      addAppJavaOpts "${KNOX_CLI_LOG_OPTS}"
+    fi
 
-   #printf "Starting $APP_LABEL \n"
-   #printf "$@"
+    if [ -n "$KNOX_CLI_DBG_OPTS" ]; then
+      addAppJavaOpts "${KNOX_CLI_DBG_OPTS}"
+    fi
 
-   $JAVA "$APP_JAVA_OPTS" -jar "$APP_JAR" "$@" || exit 1
+    if [ -n "$APP_JAVA_LIB_PATH" ]; then
+      addAppJavaOpts "${APP_JAVA_LIB_PATH}"
+    fi
 
+    # echo "APP_JAVA_OPTS =" "${APP_JAVA_OPTS[@]}"
+}
+
+function main {
+   checkJava
+   buildAppJavaOpts
+   $JAVA "${APP_JAVA_OPTS[@]}" -jar "$APP_JAR" "$@" || exit 1
    return 0
 }
 
diff --git a/gateway-release/home/bin/ldap.sh b/gateway-release/home/bin/ldap.sh
index 76db19c..763af6f 100755
--- a/gateway-release/home/bin/ldap.sh
+++ b/gateway-release/home/bin/ldap.sh
@@ -44,13 +44,13 @@ DEFAULT_APP_LOG_DIR="$APP_HOME_DIR/logs"
 APP_LOG_DIR=${KNOX_LDAP_LOG_DIR:-$DEFAULT_APP_LOG_DIR}
 
 # The app's logging options
-APP_LOG_OPTS="$KNOX_LDAP_LOG_OPTS"
+export APP_LOG_OPTS="$KNOX_LDAP_LOG_OPTS"
 
 # The app's memory options
-APP_MEM_OPTS="$KNOX_LDAP_MEM_OPTS"
+export APP_MEM_OPTS="$KNOX_LDAP_MEM_OPTS"
 
 # The app's debugging options
-APP_DBG_OPTS="$KNOX_LDAP_DBG_OPTS"
+export APP_DBG_OPTS="$KNOX_LDAP_DBG_OPTS"
 
 # The name of the PID file
 DEFAULT_APP_PID_DIR="$APP_HOME_DIR/pids"
@@ -64,9 +64,6 @@ APP_ERR_FILE="$APP_LOG_DIR/$APP_NAME.err"
 DEFAULT_APP_RUNNING_IN_FOREGROUND="$LDAP_SERVER_RUN_IN_FOREGROUND"
 export APP_RUNNING_IN_FOREGROUND=${KNOX_LDAP_RUNNING_IN_FOREGROUND:-$DEFAULT_APP_RUNNING_IN_FOREGROUND}
 
-# JAVA options used by the JVM
-export APP_JAVA_OPTS="$APP_JAVA_LIB_PATH $APP_MEM_OPTS $APP_DBG_OPTS $APP_LOG_OPTS"
-
 function main {
    checkJava
 
diff --git a/gateway-shell-release/home/bin/knoxshell.sh b/gateway-shell-release/home/bin/knoxshell.sh
index ca6dc11..ad205b5 100755
--- a/gateway-shell-release/home/bin/knoxshell.sh
+++ b/gateway-shell-release/home/bin/knoxshell.sh
@@ -42,7 +42,35 @@ APP_MEM_OPTS="$KNOX_SHELL_MEM_OPTS"
 APP_DBG_OPTS="$KNOX_SHELL_DBG_OPTS"
 
 # JAVA options used by the JVM
-export APP_JAVA_OPTS="$APP_JAVA_LIB_PATH $APP_MEM_OPTS $APP_DBG_OPTS $APP_LOG_OPTS"
+declare -a APP_JAVA_OPTS
+
+function addAppJavaOpts {
+    options_array=$(echo "${1}" | tr " " "\n")
+    for option in ${options_array}
+    do
+       APP_JAVA_OPTS+=("$option")
+    done
+}
+
+function buildAppJavaOpts {
+    if [ -n "$APP_MEM_OPTS" ]; then
+      addAppJavaOpts "${APP_MEM_OPTS}"
+    fi
+
+    if [ -n "$APP_LOG_OPTS" ]; then
+      addAppJavaOpts "${APP_LOG_OPTS}"
+    fi
+
+    if [ -n "$APP_DBG_OPTS" ]; then
+      addAppJavaOpts "${APP_DBG_OPTS}"
+    fi
+
+    if [ -n "$APP_JAVA_LIB_PATH" ]; then
+      addAppJavaOpts "${APP_JAVA_LIB_PATH}"
+    fi
+
+    # echo "APP_JAVA_OPTS =" "${APP_JAVA_OPTS[@]}"
+}
 
 function main {
    checkJava
@@ -65,7 +93,8 @@ function main {
          printHelp
          ;;
       *)
-         $JAVA "$APP_JAVA_OPTS" -jar "$APP_JAR" "$@" || exit 1
+         buildAppJavaOpts
+         $JAVA "${APP_JAVA_OPTS[@]}" -jar "$APP_JAR" "$@" || exit 1
          ;;
    esac