From 2f1b46f6363e67304acd90e75622e9d42e9a4fa9 Mon Sep 17 00:00:00 2001 From: Zipeng WU Date: Thu, 4 Aug 2022 12:02:01 +0200 Subject: [PATCH] SONAR-17136 Replace JSW with nohup for Linux & MacOS --- .../src/pages/setup/install-server.md | 4 +- sonar-application/build.gradle | 23 +- .../main/assembly/bin/jsw-license/LICENSE.txt | 27 -- .../bin/linux-x86-64/lib/libwrapper.so | Bin 15248 -> 0 bytes .../main/assembly/bin/linux-x86-64/sonar.sh | 406 +++-------------- .../main/assembly/bin/linux-x86-64/wrapper | Bin 111027 -> 0 bytes .../macosx-universal-64/lib/libwrapper.jnilib | Bin 14488 -> 0 bytes .../assembly/bin/macosx-universal-64/sonar.sh | 425 +++--------------- .../assembly/bin/macosx-universal-64/wrapper | Bin 126456 -> 0 bytes .../src/main/assembly/conf/wrapper.conf | 99 ---- 10 files changed, 124 insertions(+), 860 deletions(-) delete mode 100755 sonar-application/src/main/assembly/bin/jsw-license/LICENSE.txt delete mode 100755 sonar-application/src/main/assembly/bin/linux-x86-64/lib/libwrapper.so delete mode 100755 sonar-application/src/main/assembly/bin/linux-x86-64/wrapper delete mode 100755 sonar-application/src/main/assembly/bin/macosx-universal-64/lib/libwrapper.jnilib delete mode 100755 sonar-application/src/main/assembly/bin/macosx-universal-64/wrapper delete mode 100644 sonar-application/src/main/assembly/conf/wrapper.conf diff --git a/server/sonar-docs/src/pages/setup/install-server.md b/server/sonar-docs/src/pages/setup/install-server.md index 91b6776e528..0a7a5c479fa 100644 --- a/server/sonar-docs/src/pages/setup/install-server.md +++ b/server/sonar-docs/src/pages/setup/install-server.md @@ -159,10 +159,10 @@ You can now browse SonarQube at _http://localhost:9000_ (the default System admi If there are multiple versions of Java installed on your server, you may need to explicitly define which version of Java is used. -To change the Java JVM used by SonarQube, edit _$SONARQUBE-HOME/conf/wrapper.conf_ and update the following line: +To change the Java JVM used by SonarQube, edit _$SONARQUBE-HOME/bin/{platform_OS}/sonar.sh_ and update the following line: ``` -wrapper.java.command=/path/to/my/jdk/bin/java +JAVA_CMD="java" ``` ### Advanced Installation Features diff --git a/sonar-application/build.gradle b/sonar-application/build.gradle index d6316dfa401..f0bb9ada066 100644 --- a/sonar-application/build.gradle +++ b/sonar-application/build.gradle @@ -17,7 +17,6 @@ sonarqube { configurations { zip - jsw scanner web shutdowner @@ -37,7 +36,7 @@ configurations { extendsFrom bundledPlugin transitive = true } - appLicenses.extendsFrom(compile, web, scanner, jsw, jdbc_mssql, jdbc_postgresql, jdbc_h2) + appLicenses.extendsFrom(compile, web, scanner, jdbc_mssql, jdbc_postgresql, jdbc_h2) cyclonedx } @@ -66,7 +65,6 @@ dependencies { compileOnly 'com.google.code.findbugs:jsr305' - jsw 'tanukisoft:wrapper:3.2.3' scanner project(path: ':sonar-scanner-engine-shaded', configuration: 'shadow') cyclonedx project(path: ':sonar-scanner-engine-shaded') web project(':server:sonar-web') @@ -144,6 +142,8 @@ task zip(type: Zip, dependsOn: [configurations.compileClasspath, tasks.downloadL exclude 'conf/sonar.properties' exclude 'conf/wrapper.conf' exclude 'elasticsearch-patch' + exclude 'bin/linux-x86-64/sonar.sh' + exclude 'bin/macosx-universal-64/sonar.sh' } } @@ -222,8 +222,16 @@ task zip(type: Zip, dependsOn: [configurations.compileClasspath, tasks.downloadL 'webJavaOpts' : '-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError' ]) } - into("${archiveDir}/conf/") { - from file('src/main/assembly/conf/wrapper.conf') + + into("${archiveDir}/bin/linux-x86-64/") { + from file('src/main/assembly/bin/linux-x86-64/sonar.sh') + filter(ReplaceTokens, tokens: [ + 'sqversion': version + ]) + } + + into("${archiveDir}/bin/macosx-universal-64/") { + from file('src/main/assembly/bin/macosx-universal-64/sonar.sh') filter(ReplaceTokens, tokens: [ 'sqversion': version ]) @@ -240,9 +248,6 @@ task zip(type: Zip, dependsOn: [configurations.compileClasspath, tasks.downloadL into("${archiveDir}/lib/extensions/") { from configurations.bundledPlugin } - into("${archiveDir}/lib/jsw/") { - from configurations.jsw - } into("${archiveDir}/lib/scanner/") { from configurations.scanner } @@ -315,7 +320,7 @@ artifactoryPublish.skip = false def bomFile = layout.buildDirectory.file('reports/bom.json') cyclonedxBom { - includeConfigs += ["runtimeClasspath", "jsw", "web", "shutdowner", "jdbc_mssql", "jdbc_postgresql", "jdbc_h2", "bundledPlugin_deps", + includeConfigs += ["runtimeClasspath", "web", "shutdowner", "jdbc_mssql", "jdbc_postgresql", "jdbc_h2", "bundledPlugin_deps", "cyclonedx"] outputs.file bomFile outputs.upToDateWhen { false } diff --git a/sonar-application/src/main/assembly/bin/jsw-license/LICENSE.txt b/sonar-application/src/main/assembly/bin/jsw-license/LICENSE.txt deleted file mode 100755 index 9cd452732c0..00000000000 --- a/sonar-application/src/main/assembly/bin/jsw-license/LICENSE.txt +++ /dev/null @@ -1,27 +0,0 @@ -This bundle contains Java Service Wrapper scripts and binaries version 3.2.3 from Tanukisoftware published -under the following license: - - Copyright (c) 2001 Silver Egg Technology - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sub-license, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - http://web.archive.org/web/20070622164715/wrapper.tanukisoftware.org/doc/english/license.html diff --git a/sonar-application/src/main/assembly/bin/linux-x86-64/lib/libwrapper.so b/sonar-application/src/main/assembly/bin/linux-x86-64/lib/libwrapper.so deleted file mode 100755 index 24197bf6e207d3f50d6f6575cfbad6307b721828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15248 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 VF25Kkuf^OyC~^Ko#PtJ}{{bd(7YP6W diff --git a/sonar-application/src/main/assembly/bin/linux-x86-64/sonar.sh b/sonar-application/src/main/assembly/bin/linux-x86-64/sonar.sh index e8d007df085..97d41beb93c 100755 --- a/sonar-application/src/main/assembly/bin/linux-x86-64/sonar.sh +++ b/sonar-application/src/main/assembly/bin/linux-x86-64/sonar.sh @@ -1,60 +1,9 @@ #! /bin/sh -# -# Copyright (c) 1999, 2006 Tanuki Software Inc. -# -# Java Service Wrapper sh script. Suitable for starting and stopping -# wrapped Java applications on UNIX platforms. -# - -#----------------------------------------------------------------------------- -# These settings can be modified to fit the needs of your application - -# Default values for the Application variables, below. -# -# NOTE: The build for specific applications may override this during the resource-copying -# phase, to fill in a concrete name and avoid the use of the defaults specified here. -DEF_APP_NAME="SonarQube" -DEF_APP_LONG_NAME="SonarQube" - -# Application -APP_NAME="${DEF_APP_NAME}" -APP_LONG_NAME="${DEF_APP_LONG_NAME}" - -# Wrapper -WRAPPER_CMD="./wrapper" -WRAPPER_CONF="../../conf/wrapper.conf" -SHUTDOWNER_LIB_DIR="../../lib" - -# Priority at which to run the wrapper. See "man nice" for valid priorities. -# nice is only used if a priority is specified. -PRIORITY= +APP_NAME="SonarQube" -# Location of the pid file. -PIDDIR="." - -# If uncommented, causes the Wrapper to be shutdown using an anchor file. -# When launched with the 'start' command, it will also ignore all INT and -# TERM signals. -#IGNORE_SIGNALS=true - -# If specified, the Wrapper will be run as the specified user. -# IMPORTANT - Make sure that the user has the required privileges to write -# the PID file and wrapper.log files. Failure to be able to write the log -# file will cause the Wrapper to exit without any way to write out an error -# message. -# NOTE - This will set the user which is used to run the Wrapper as well as -# the JVM and is not useful in situations where a privileged resource or -# port needs to be allocated prior to the user being changed. -#RUN_AS_USER= - -# The following two lines are used by the chkconfig command. Change as is -# appropriate for your application. They should remain commented. -# chkconfig: 2345 20 80 -# description: Test Wrapper Sample Application - -# Do not modify anything beyond this point -#----------------------------------------------------------------------------- +# Java command location +JAVA_CMD="java" # Get the fully qualified path to the script case $0 in @@ -104,40 +53,24 @@ done # Change the current directory to the location of the script cd "`dirname "$REALPATH"`" -REALDIR=`pwd` -# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if -# the working directory is later changed. -FIRST_CHAR=`echo $PIDDIR | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - PIDDIR=$REALDIR/$PIDDIR -fi -# Same test for WRAPPER_CMD -FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - WRAPPER_CMD=$REALDIR/$WRAPPER_CMD -fi -# Same test for WRAPPER_CONF -FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - WRAPPER_CONF=$REALDIR/$WRAPPER_CONF -fi -# Same test for SHUTDOWNER_LIB_DIR -FIRST_CHAR=`echo $SHUTDOWNER_LIB_DIR | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - SHUTDOWNER_LIB_DIR=$REALDIR/$SHUTDOWNER_LIB_DIR -fi +LIB_DIR="../../lib" + +HAZELCAST_ADDITIONAL="--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \ +--add-opens=java.base/java.lang=ALL-UNNAMED \ +--add-opens=java.base/java.nio=ALL-UNNAMED \ +--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \ +--add-opens=java.management/sun.management=ALL-UNNAMED \ +--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED" -# Process ID -ANCHORFILE="$PIDDIR/$APP_NAME.anchor" -PIDFILE="$PIDDIR/$APP_NAME.pid" -LOCKDIR="/var/lock/subsys" -LOCKFILE="$LOCKDIR/$APP_NAME" -pid="" +# Sonar app launching process memory setting +XMS="-Xms8m" +XMX="-Xmx32m" + +COMMAND_LINE="$JAVA_CMD $XMS $XMX $HAZELCAST_ADDITIONAL -jar $LIB_DIR/sonar-application-@sqversion@.jar" + +# Location of the pid file. +PIDFILE="./$APP_NAME.pid" # Resolve the location of the 'ps' command PSEXE="/usr/bin/ps" @@ -152,222 +85,6 @@ then fi fi -# Resolve the os -DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]` -case "$DIST_OS" in - 'sunos') - DIST_OS="solaris" - ;; - 'hp-ux' | 'hp-ux64') - DIST_OS="hpux" - ;; - 'darwin') - DIST_OS="macosx" - ;; - 'unix_sv') - DIST_OS="unixware" - ;; -esac - -# Resolve the architecture -DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]` -if [ "$DIST_ARCH" = "unknown" ] -then - DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]` -fi -case "$DIST_ARCH" in - 'amd64' | 'athlon' | 'ia32' | 'ia64' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64') - DIST_ARCH="x86" - ;; - 'ip27') - DIST_ARCH="mips" - ;; - 'power' | 'powerpc' | 'power_pc' | 'ppc64') - DIST_ARCH="ppc" - ;; - 'pa_risc' | 'pa-risc') - DIST_ARCH="parisc" - ;; - 'sun4u' | 'sparcv9') - DIST_ARCH="sparc" - ;; - '9000/800') - DIST_ARCH="parisc" - ;; -esac - -outputFile() { - if [ -f "$1" ] - then - echo " $1 (Found but not executable.)"; - else - echo " $1" - fi -} - -# Decide on the wrapper binary to use. -# If a 32-bit wrapper binary exists then it will work on 32 or 64 bit -# platforms, if the 64-bit binary exists then the distribution most -# likely wants to use long names. Otherwise, look for the default. -# For macosx, we also want to look for universal binaries. -WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" -if [ -x "$WRAPPER_TEST_CMD" ] -then - WRAPPER_CMD="$WRAPPER_TEST_CMD" -else - if [ "$DIST_OS" = "macosx" ] - then - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-32" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-64" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - if [ ! -x "$WRAPPER_CMD" ] - then - echo "Unable to locate any of the following binaries:" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" - outputFile "$WRAPPER_CMD-$DIST_OS-universal-32" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - outputFile "$WRAPPER_CMD-$DIST_OS-universal-64" - outputFile "$WRAPPER_CMD" - exit 1 - fi - fi - fi - fi - else - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - if [ ! -x "$WRAPPER_CMD" ] - then - echo "Unable to locate any of the following binaries:" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - outputFile "$WRAPPER_CMD" - exit 1 - fi - fi - fi -fi - -# Build the nice clause -if [ "X$PRIORITY" = "X" ] -then - CMDNICE="" -else - CMDNICE="nice -$PRIORITY" -fi - -CMDJAVA="java" -# read java command from wrapper.conf as first uncommented line containing "wrapper.java.command=" -grep "wrapper.java.command=" "$WRAPPER_CONF" | grep -v "^#" | while read -r line; do - CMDJAVA="${line#*=}" - break -done - -# Build the anchor file clause. -if [ "X$IGNORE_SIGNALS" = "X" ] -then - ANCHORPROP= - IGNOREPROP= -else - ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\" - IGNOREPROP=wrapper.ignore_signals=TRUE -fi - -# Build the lock file clause. Only create a lock file if the lock directory exists on this platform. -LOCKPROP= -if [ -d $LOCKDIR ] -then - if [ -w $LOCKDIR ] - then - LOCKPROP=wrapper.lockfile=\"$LOCKFILE\" - fi -fi - -checkUser() { - # $1 touchLock flag - # $2 command - - # Check the configured user. If necessary rerun this script as the desired user. - if [ "X$RUN_AS_USER" != "X" ] - then - # Resolve the location of the 'id' command - IDEXE="/usr/xpg4/bin/id" - if [ ! -x "$IDEXE" ] - then - IDEXE="/usr/bin/id" - if [ ! -x "$IDEXE" ] - then - echo "Unable to locate 'id'." - echo "Please report this message along with the location of the command on your system." - exit 1 - fi - fi - - if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ] - then - # Already running as the configured user. Avoid password prompts by not calling su. - RUN_AS_USER="" - fi - fi - if [ "X$RUN_AS_USER" != "X" ] - then - # If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be - # able to create the lock file. The Wrapper will be able to update this file once it - # is created but will not be able to delete it on shutdown. If $2 is defined then - # the lock file should be created for the current command - if [ "X$LOCKPROP" != "X" ] - then - if [ "X$1" != "X" ] - then - # Resolve the primary group - RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1` - if [ "X$RUN_AS_GROUP" = "X" ] - then - RUN_AS_GROUP=$RUN_AS_USER - fi - touch $LOCKFILE - chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE - fi - fi - - # Still want to change users, recurse. This means that the user will only be - # prompted for a password once. Variables shifted by 1 - su -m $RUN_AS_USER -c "\"$REALPATH\" $2" - RETVAL=$? - - # Now that we are the original user again, we may need to clean up the lock file. - if [ "X$LOCKPROP" != "X" ] - then - getpid - if [ "X$pid" = "X" ] - then - # Wrapper is not running so make sure the lock file is deleted. - if [ -f "$LOCKFILE" ] - then - rm "$LOCKFILE" - fi - fi - fi - - exit $RETVAL - fi -} - getpid() { if [ -f "$PIDFILE" ] then @@ -381,7 +98,7 @@ getpid() { # common is during system startup after an unclean shutdown. # The ps statement below looks for the specific wrapper command running as # the pid. If it is not found then the pid file is considered to be stale. - pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1` + pidtest=`$PSEXE -p $pid -o args | grep "sonar-application-@sqversion@.jar" | tail -1` if [ "X$pidtest" = "X" ] then # This is a stale pid file. @@ -408,38 +125,36 @@ testpid() { } console() { - echo "Running $APP_LONG_NAME..." + echo "Running $APP_NAME..." getpid if [ "X$pid" = "X" ] then - # The string passed to eval must handles spaces in paths correctly. - COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" $ANCHORPROP $LOCKPROP" - eval $COMMAND_LINE + echo $$ > $PIDFILE + exec $COMMAND_LINE -Dsonar.log.console=true else - echo "$APP_LONG_NAME is already running." + echo "$APP_NAME is already running." exit 1 fi } - + start() { - echo "Starting $APP_LONG_NAME..." + echo "Starting $APP_NAME..." getpid if [ "X$pid" = "X" ] then - # The string passed to eval must handles spaces in paths correctly. - COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP" - eval $COMMAND_LINE + exec nohup $COMMAND_LINE >../../logs/nohup.log 2>&1 & + echo $! > $PIDFILE else - echo "$APP_LONG_NAME is already running." + echo "$APP_NAME is already running." exit 1 fi getpid if [ "X$pid" != "X" ] then - echo "Started $APP_LONG_NAME." + echo "Started $APP_NAME." else - echo "Failed to start $APP_LONG_NAME." - fi + echo "Failed to start $APP_NAME." + fi } waitforstop() { @@ -456,7 +171,7 @@ waitforstop() { then CNT=`expr $CNT + 1` else - echo "Waiting for $APP_LONG_NAME to exit..." + echo "Waiting for $APP_NAME to exit..." CNT=0 fi TOTCNT=`expr $TOTCNT + 1` @@ -470,38 +185,26 @@ waitforstop() { testpid if [ "X$pid" != "X" ] then - echo "Failed to stop $APP_LONG_NAME." + echo "Failed to stop $APP_NAME." exit 1 else - echo "Stopped $APP_LONG_NAME." + echo "Stopped $APP_NAME." fi } stopit() { - echo "Gracefully stopping $APP_LONG_NAME..." + echo "Gracefully stopping $APP_NAME..." getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME was not running." + echo "$APP_NAME was not running." else - if [ "X$IGNORE_SIGNALS" = "X" ] + kill $pid + if [ $? -ne 0 ] then - # Running so try to stop it. - kill $pid - if [ $? -ne 0 ] - then - # An explanation for the failure should have been given - echo "Unable to stop $APP_LONG_NAME." - exit 1 - fi - else - rm -f "$ANCHORFILE" - if [ -f "$ANCHORFILE" ] - then - # An explanation for the failure should have been given - echo "Unable to stop $APP_LONG_NAME." - exit 1 - fi + # An explanation for the failure should have been given + echo "Unable to stop $APP_NAME." + exit 1 fi waitforstop @@ -512,7 +215,7 @@ forcestopit() { getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME not running" + echo "$APP_NAME not running" exit 1 fi @@ -522,8 +225,8 @@ forcestopit() { # start shutdowner from SQ installation directory cd "../.." - echo "Force stopping $APP_LONG_NAME..." - ${CMDJAVA} -classpath "${SHUTDOWNER_LIB_DIR}/*" "org.sonar.application.Shutdowner" + echo "Force stopping $APP_NAME..." + ${JAVA_CMD} -jar "lib/sonar-shutdowner-@sqversion@.jar" waitforstop fi @@ -533,30 +236,30 @@ status() { getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME is not running." + echo "$APP_NAME is not running." exit 1 else - echo "$APP_LONG_NAME is running ($pid)." + echo "$APP_NAME is running ($pid)." exit 0 fi } dump() { - echo "Dumping $APP_LONG_NAME..." + echo "Dumping $APP_NAME..." getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME was not running." + echo "$APP_NAME was not running." else kill -3 $pid if [ $? -ne 0 ] then - echo "Failed to dump $APP_LONG_NAME." + echo "Failed to dump $APP_NAME." exit 1 else - echo "Dumped $APP_LONG_NAME." + echo "Dumped $APP_NAME." fi fi } @@ -564,38 +267,31 @@ dump() { case "$1" in 'console') - checkUser touchlock $1 console ;; 'start') - checkUser touchlock $1 start ;; 'stop') - checkUser "" $1 stopit ;; 'force-stop') - checkUser "" $1 forcestopit ;; 'restart') - checkUser touchlock $1 stopit start ;; 'status') - checkUser "" $1 status ;; 'dump') - checkUser "" $1 dump ;; diff --git a/sonar-application/src/main/assembly/bin/linux-x86-64/wrapper b/sonar-application/src/main/assembly/bin/linux-x86-64/wrapper deleted file mode 100755 index 3128b95b491e6da6cb23c8223e1b57ce9647620b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111027 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 FzX8amej)$> diff --git a/sonar-application/src/main/assembly/bin/macosx-universal-64/sonar.sh b/sonar-application/src/main/assembly/bin/macosx-universal-64/sonar.sh index 73c1a3d5d7f..2ef4624c57b 100755 --- a/sonar-application/src/main/assembly/bin/macosx-universal-64/sonar.sh +++ b/sonar-application/src/main/assembly/bin/macosx-universal-64/sonar.sh @@ -1,60 +1,9 @@ #! /bin/sh -# -# Copyright (c) 1999, 2006 Tanuki Software Inc. -# -# Java Service Wrapper sh script. Suitable for starting and stopping -# wrapped Java applications on UNIX platforms. -# - -#----------------------------------------------------------------------------- -# These settings can be modified to fit the needs of your application - -# Default values for the Application variables, below. -# -# NOTE: The build for specific applications may override this during the resource-copying -# phase, to fill in a concrete name and avoid the use of the defaults specified here. -DEF_APP_NAME="SonarQube" -DEF_APP_LONG_NAME="SonarQube" - -# Application -APP_NAME="${DEF_APP_NAME}" -APP_LONG_NAME="${DEF_APP_LONG_NAME}" - -# Wrapper -WRAPPER_CMD="./wrapper" -WRAPPER_CONF="../../conf/wrapper.conf" -SHUTDOWNER_LIB_DIR="../../lib" - -# Priority at which to run the wrapper. See "man nice" for valid priorities. -# nice is only used if a priority is specified. -PRIORITY= +APP_NAME="SonarQube" -# Location of the pid file. -PIDDIR="." - -# If uncommented, causes the Wrapper to be shutdown using an anchor file. -# When launched with the 'start' command, it will also ignore all INT and -# TERM signals. -#IGNORE_SIGNALS=true - -# If specified, the Wrapper will be run as the specified user. -# IMPORTANT - Make sure that the user has the required privileges to write -# the PID file and wrapper.log files. Failure to be able to write the log -# file will cause the Wrapper to exit without any way to write out an error -# message. -# NOTE - This will set the user which is used to run the Wrapper as well as -# the JVM and is not useful in situations where a privileged resource or -# port needs to be allocated prior to the user being changed. -#RUN_AS_USER= - -# The following two lines are used by the chkconfig command. Change as is -# appropriate for your application. They should remain commented. -# chkconfig: 2345 20 80 -# description: Test Wrapper Sample Application - -# Do not modify anything beyond this point -#----------------------------------------------------------------------------- +# Java command location +JAVA_CMD="java" # Get the fully qualified path to the script case $0 in @@ -104,40 +53,24 @@ done # Change the current directory to the location of the script cd "`dirname "$REALPATH"`" -REALDIR=`pwd` -# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if -# the working directory is later changed. -FIRST_CHAR=`echo $PIDDIR | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - PIDDIR=$REALDIR/$PIDDIR -fi -# Same test for WRAPPER_CMD -FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - WRAPPER_CMD=$REALDIR/$WRAPPER_CMD -fi -# Same test for WRAPPER_CONF -FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - WRAPPER_CONF=$REALDIR/$WRAPPER_CONF -fi -# Same test for SHUTDOWNER_LIB_DIR -FIRST_CHAR=`echo $SHUTDOWNER_LIB_DIR | cut -c1,1` -if [ "$FIRST_CHAR" != "/" ] -then - SHUTDOWNER_LIB_DIR=$REALDIR/$SHUTDOWNER_LIB_DIR -fi +LIB_DIR="../../lib" + +HAZELCAST_ADDITIONAL="--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \ +--add-opens=java.base/java.lang=ALL-UNNAMED \ +--add-opens=java.base/java.nio=ALL-UNNAMED \ +--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \ +--add-opens=java.management/sun.management=ALL-UNNAMED \ +--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED" -# Process ID -ANCHORFILE="$PIDDIR/$APP_NAME.anchor" -PIDFILE="$PIDDIR/$APP_NAME.pid" -LOCKDIR="/var/lock/subsys" -LOCKFILE="$LOCKDIR/$APP_NAME" -pid="" +# Sonar app launching process memory setting +XMS="-Xms8m" +XMX="-Xmx32m" + +COMMAND_LINE="$JAVA_CMD $XMS $XMX $HAZELCAST_ADDITIONAL -jar $LIB_DIR/sonar-application-@sqversion@.jar" + +# Location of the pid file. +PIDFILE="./$APP_NAME.pid" # Resolve the location of the 'ps' command PSEXE="/usr/bin/ps" @@ -152,222 +85,6 @@ then fi fi -# Resolve the os -DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]` -case "$DIST_OS" in - 'sunos') - DIST_OS="solaris" - ;; - 'hp-ux' | 'hp-ux64') - DIST_OS="hpux" - ;; - 'darwin') - DIST_OS="macosx" - ;; - 'unix_sv') - DIST_OS="unixware" - ;; -esac - -# Resolve the architecture -DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]` -if [ "$DIST_ARCH" = "unknown" ] -then - DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]` -fi -case "$DIST_ARCH" in - 'amd64' | 'athlon' | 'ia32' | 'ia64' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64') - DIST_ARCH="x86" - ;; - 'ip27') - DIST_ARCH="mips" - ;; - 'power' | 'powerpc' | 'power_pc' | 'ppc64') - DIST_ARCH="ppc" - ;; - 'pa_risc' | 'pa-risc') - DIST_ARCH="parisc" - ;; - 'sun4u' | 'sparcv9') - DIST_ARCH="sparc" - ;; - '9000/800') - DIST_ARCH="parisc" - ;; -esac - -outputFile() { - if [ -f "$1" ] - then - echo " $1 (Found but not executable.)"; - else - echo " $1" - fi -} - -# Decide on the wrapper binary to use. -# If a 32-bit wrapper binary exists then it will work on 32 or 64 bit -# platforms, if the 64-bit binary exists then the distribution most -# likely wants to use long names. Otherwise, look for the default. -# For macosx, we also want to look for universal binaries. -WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" -if [ -x "$WRAPPER_TEST_CMD" ] -then - WRAPPER_CMD="$WRAPPER_TEST_CMD" -else - if [ "$DIST_OS" = "macosx" ] - then - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-32" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-64" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - if [ ! -x "$WRAPPER_CMD" ] - then - echo "Unable to locate any of the following binaries:" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" - outputFile "$WRAPPER_CMD-$DIST_OS-universal-32" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - outputFile "$WRAPPER_CMD-$DIST_OS-universal-64" - outputFile "$WRAPPER_CMD" - exit 1 - fi - fi - fi - fi - else - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - if [ -x "$WRAPPER_TEST_CMD" ] - then - WRAPPER_CMD="$WRAPPER_TEST_CMD" - else - if [ ! -x "$WRAPPER_CMD" ] - then - echo "Unable to locate any of the following binaries:" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" - outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" - outputFile "$WRAPPER_CMD" - exit 1 - fi - fi - fi -fi - -# Build the nice clause -if [ "X$PRIORITY" = "X" ] -then - CMDNICE="" -else - CMDNICE="nice -$PRIORITY" -fi - -CMDJAVA="java" -# read java command from wrapper.conf as first uncommented line containing "wrapper.java.command=" -grep "wrapper.java.command=" "$WRAPPER_CONF" | grep -v "^#" | while read -r line; do - CMDJAVA="${line#*=}" - break -done - -# Build the anchor file clause. -if [ "X$IGNORE_SIGNALS" = "X" ] -then - ANCHORPROP= - IGNOREPROP= -else - ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\" - IGNOREPROP=wrapper.ignore_signals=TRUE -fi - -# Build the lock file clause. Only create a lock file if the lock directory exists on this platform. -LOCKPROP= -if [ -d $LOCKDIR ] -then - if [ -w $LOCKDIR ] - then - LOCKPROP=wrapper.lockfile=\"$LOCKFILE\" - fi -fi - -checkUser() { - # $1 touchLock flag - # $2 command - - # Check the configured user. If necessary rerun this script as the desired user. - if [ "X$RUN_AS_USER" != "X" ] - then - # Resolve the location of the 'id' command - IDEXE="/usr/xpg4/bin/id" - if [ ! -x "$IDEXE" ] - then - IDEXE="/usr/bin/id" - if [ ! -x "$IDEXE" ] - then - echo "Unable to locate 'id'." - echo "Please report this message along with the location of the command on your system." - exit 1 - fi - fi - - if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ] - then - # Already running as the configured user. Avoid password prompts by not calling su. - RUN_AS_USER="" - fi - fi - if [ "X$RUN_AS_USER" != "X" ] - then - # If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be - # able to create the lock file. The Wrapper will be able to update this file once it - # is created but will not be able to delete it on shutdown. If $2 is defined then - # the lock file should be created for the current command - if [ "X$LOCKPROP" != "X" ] - then - if [ "X$1" != "X" ] - then - # Resolve the primary group - RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1` - if [ "X$RUN_AS_GROUP" = "X" ] - then - RUN_AS_GROUP=$RUN_AS_USER - fi - touch $LOCKFILE - chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE - fi - fi - - # Still want to change users, recurse. This means that the user will only be - # prompted for a password once. Variables shifted by 1 - su -m $RUN_AS_USER -c "\"$REALPATH\" $2" - RETVAL=$? - - # Now that we are the original user again, we may need to clean up the lock file. - if [ "X$LOCKPROP" != "X" ] - then - getpid - if [ "X$pid" = "X" ] - then - # Wrapper is not running so make sure the lock file is deleted. - if [ -f "$LOCKFILE" ] - then - rm "$LOCKFILE" - fi - fi - fi - - exit $RETVAL - fi -} - getpid() { if [ -f "$PIDFILE" ] then @@ -381,14 +98,7 @@ getpid() { # common is during system startup after an unclean shutdown. # The ps statement below looks for the specific wrapper command running as # the pid. If it is not found then the pid file is considered to be stale. - case "$DIST_OS" in - 'macosx') - pidtest=`$PSEXE -ww -p $pid -o command | grep "$WRAPPER_CMD" | tail -1` - ;; - *) - pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1` - ;; - esac + pidtest=`$PSEXE -p $pid | grep "sonar-application-@sqversion@.jar" | tail -1` if [ "X$pidtest" = "X" ] then # This is a stale pid file. @@ -415,40 +125,38 @@ testpid() { } console() { - echo "Running $APP_LONG_NAME..." + echo "Running $APP_NAME..." getpid if [ "X$pid" = "X" ] then - # The string passed to eval must handles spaces in paths correctly. - COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" $ANCHORPROP $LOCKPROP" - eval $COMMAND_LINE + echo $$ > $PIDFILE + exec $COMMAND_LINE -Dsonar.log.console=true else - echo "$APP_LONG_NAME is already running." + echo "$APP_NAME is already running." exit 1 fi } - + start() { - echo "Starting $APP_LONG_NAME..." + echo "Starting $APP_NAME..." getpid if [ "X$pid" = "X" ] then - # The string passed to eval must handles spaces in paths correctly. - COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP" - eval $COMMAND_LINE + exec nohup $COMMAND_LINE >../../logs/nohup.log 2>&1 & + echo $! > $PIDFILE else - echo "$APP_LONG_NAME is already running." + echo "$APP_NAME is already running." exit 1 fi getpid if [ "X$pid" != "X" ] then - echo "Started $APP_LONG_NAME." + echo "Started $APP_NAME." else - echo "Failed to start $APP_LONG_NAME." - fi + echo "Failed to start $APP_NAME." + fi } - + waitforstop() { # We can not predict how long it will take for the wrapper to # actually stop as it depends on settings in wrapper.conf. @@ -463,7 +171,7 @@ waitforstop() { then CNT=`expr $CNT + 1` else - echo "Waiting for $APP_LONG_NAME to exit..." + echo "Waiting for $APP_NAME to exit..." CNT=0 fi TOTCNT=`expr $TOTCNT + 1` @@ -477,38 +185,26 @@ waitforstop() { testpid if [ "X$pid" != "X" ] then - echo "Failed to stop $APP_LONG_NAME." + echo "Failed to stop $APP_NAME." exit 1 else - echo "Stopped $APP_LONG_NAME." + echo "Stopped $APP_NAME." fi } stopit() { - echo "Gracefully stopping $APP_LONG_NAME..." + echo "Gracefully stopping $APP_NAME..." getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME was not running." + echo "$APP_NAME was not running." else - if [ "X$IGNORE_SIGNALS" = "X" ] + kill $pid + if [ $? -ne 0 ] then - # Running so try to stop it. - kill $pid - if [ $? -ne 0 ] - then - # An explanation for the failure should have been given - echo "Unable to stop $APP_LONG_NAME." - exit 1 - fi - else - rm -f "$ANCHORFILE" - if [ -f "$ANCHORFILE" ] - then - # An explanation for the failure should have been given - echo "Unable to stop $APP_LONG_NAME." - exit 1 - fi + # An explanation for the failure should have been given + echo "Unable to stop $APP_NAME." + exit 1 fi waitforstop @@ -518,19 +214,19 @@ stopit() { forcestopit() { getpid if [ "X$pid" = "X" ] - then - echo "$APP_LONG_NAME not running" + then + echo "$APP_NAME not running" exit 1 - fi + fi - testpid - if [ "X$pid" != "X" ] - then + testpid + if [ "X$pid" != "X" ] + then # start shutdowner from SQ installation directory cd "../.." - echo "Force stopping $APP_LONG_NAME..." - ${CMDJAVA} -classpath "${SHUTDOWNER_LIB_DIR}/*" "org.sonar.application.Shutdowner" + echo "Force stopping $APP_NAME..." + ${JAVA_CMD} -jar "lib/sonar-shutdowner-@sqversion@.jar" waitforstop fi @@ -540,30 +236,30 @@ status() { getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME is not running." + echo "$APP_NAME is not running." exit 1 else - echo "$APP_LONG_NAME is running ($pid)." + echo "$APP_NAME is running ($pid)." exit 0 fi } dump() { - echo "Dumping $APP_LONG_NAME..." + echo "Dumping $APP_NAME..." getpid if [ "X$pid" = "X" ] then - echo "$APP_LONG_NAME was not running." + echo "$APP_NAME was not running." else kill -3 $pid if [ $? -ne 0 ] then - echo "Failed to dump $APP_LONG_NAME." + echo "Failed to dump $APP_NAME." exit 1 else - echo "Dumped $APP_LONG_NAME." + echo "Dumped $APP_NAME." fi fi } @@ -571,38 +267,31 @@ dump() { case "$1" in 'console') - checkUser touchlock $1 console ;; 'start') - checkUser touchlock $1 start ;; 'stop') - checkUser "" $1 stopit ;; 'force-stop') - checkUser "" $1 forcestopit ;; 'restart') - checkUser touchlock $1 stopit start ;; 'status') - checkUser "" $1 status ;; 'dump') - checkUser "" $1 dump ;; diff --git a/sonar-application/src/main/assembly/bin/macosx-universal-64/wrapper b/sonar-application/src/main/assembly/bin/macosx-universal-64/wrapper deleted file mode 100755 index a82f50d0396494a0e458023e263b2e59dd8c3d57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126456 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
Ze&q*zylBWq!aEfF9N{erUPpMX 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 O)MZm^S3ld3UH=R3<(X3e diff --git a/sonar-application/src/main/assembly/conf/wrapper.conf b/sonar-application/src/main/assembly/conf/wrapper.conf deleted file mode 100644 index c403dbd5b0d..00000000000 --- a/sonar-application/src/main/assembly/conf/wrapper.conf +++ /dev/null @@ -1,99 +0,0 @@ -# Path to JVM executable. By default it must be available in PATH. -# Can be an absolute path, for example: -#wrapper.java.command=/path/to/my/jdk/bin/java -wrapper.java.command=java - - -# -# DO NOT EDIT THE FOLLOWING SECTIONS -# - - -#******************************************************************** -# Wrapper Java -#******************************************************************** -wrapper.java.additional.1=-Dsonar.wrapped=true -wrapper.java.additional.2=-Djava.awt.headless=true -# extra args needed by hazelcast -wrapper.java.additional.3=--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED -wrapper.java.additional.4=--add-opens=java.base/java.lang=ALL-UNNAMED -wrapper.java.additional.5=--add-opens=java.base/java.nio=ALL-UNNAMED -wrapper.java.additional.6=--add-opens=java.base/sun.nio.ch=ALL-UNNAMED -wrapper.java.additional.7=--add-opens=java.management/sun.management=ALL-UNNAMED -wrapper.java.additional.8=--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED - -wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp -wrapper.java.classpath.1=../../lib/sonar-application-@sqversion@.jar -wrapper.java.classpath.2=../../lib/jsw/wrapper-3.2.3.jar -wrapper.java.classpath.3=../../lib/sonar-shutdowner-@sqversion@.jar -wrapper.java.library.path.1=./lib -wrapper.app.parameter.1=org.sonar.application.App -wrapper.java.initmemory=8 -wrapper.java.maxmemory=32 - -#******************************************************************** -# Wrapper Logs -#******************************************************************** - -wrapper.console.format=PM -wrapper.console.loglevel=INFO -wrapper.logfile.format=M -wrapper.logfile.loglevel=INFO -wrapper.logfile.rollmode=DATE -wrapper.logfile=../../logs/sonar.YYYYMMDD.log - -# Maximum size that the log file will be allowed to grow to before -# the log is rolled. Size is specified in bytes. The default value -# of 0, disables log rolling. May abbreviate with the 'k' (kb) or -# 'm' (mb) suffix. For example: 10m = 10 megabytes. -#wrapper.logfile.maxsize=0 - -# Maximum number of rolled log files which will be allowed before old -# files are deleted. The default value of 0 implies no limit. -wrapper.logfile.maxfiles=7 - -# Log Level for sys/event log output. (See docs for log levels) -wrapper.syslog.loglevel=NONE - -#******************************************************************** -# Wrapper Windows Properties -#******************************************************************** -# Title to use when running as a console -wrapper.console.title=SonarQube - -# Disallow start of multiple instances of an application at the same time on Windows -wrapper.single_invocation=true - -#******************************************************************** -# Wrapper Windows NT/2000/XP Service Properties -#******************************************************************** -# WARNING - Do not modify any of these properties when an application -# using this configuration file has been installed as a service. -# Please uninstall the service before modifying this section. The -# service can then be reinstalled. - -# Name of the service -wrapper.ntservice.name=SonarQube - -# Display name of the service -wrapper.ntservice.displayname=SonarQube - -# Description of the service -wrapper.ntservice.description=SonarQube - -# Service dependencies. Add dependencies as needed starting from 1 -wrapper.ntservice.dependency.1= - -# Mode in which the service is installed. AUTO_START or DEMAND_START -wrapper.ntservice.starttype=AUTO_START - -# Allow the service to interact with the desktop. -wrapper.ntservice.interactive=false - -#******************************************************************** -# Forking Properties -#******************************************************************** -wrapper.disable_restarts=TRUE -wrapper.ping.timeout=0 -wrapper.shutdown.timeout=0 -wrapper.jvm_exit.timeout=0 -- 2.39.5