Repository: karaf
Updated Branches:
  refs/heads/master 516c7b20a -> b6f472115


[KARAF-4330] Instance script doesn't return correct PID number if root instance 
is started two times


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b6f47211
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b6f47211
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b6f47211

Branch: refs/heads/master
Commit: b6f472115503eb3d98ee6bf881e9dbcb10fedb0c
Parents: 516c7b2
Author: Andrea Cosentino <[email protected]>
Authored: Fri Feb 19 08:40:41 2016 +0100
Committer: Andrea Cosentino <[email protected]>
Committed: Fri Feb 19 08:40:41 2016 +0100

----------------------------------------------------------------------
 .../base/src/main/resources/resources/bin/karaf | 59 ++++++++++++++------
 1 file changed, 42 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/b6f47211/assemblies/features/base/src/main/resources/resources/bin/karaf
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/resources/resources/bin/karaf 
b/assemblies/features/base/src/main/resources/resources/bin/karaf
index 477bb23..93236a5 100755
--- a/assemblies/features/base/src/main/resources/resources/bin/karaf
+++ b/assemblies/features/base/src/main/resources/resources/bin/karaf
@@ -324,7 +324,20 @@ setupDefaults() {
     #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent"
 }
 
-
+checkRootInstance() {
+   ROOT_INSTANCE_RUNNING=false
+   if [ -f "${KARAF_HOME}/instances/instance.properties" ]; 
+   then
+      ROOT_INSTANCE_PID=$(sed -n -e '/item.0.pid/ s/.*\= *//p' 
"${KARAF_HOME}/instances/instance.properties")
+      ROOT_INSTANCE_NAME=$(sed -n -e '/item.0.name/ s/.*\= *//p' 
"${KARAF_HOME}/instances/instance.properties")
+      if [ "$ROOT_INSTANCE_PID" -ne "0" ]; then 
+          if ps ax | grep -v grep | grep "$ROOT_INSTANCE_PID" > /dev/null
+          then
+              ROOT_INSTANCE_RUNNING=true
+          fi
+      fi
+   fi
+}
 
 init() {
     # Determine if there is special OS handling we must perform
@@ -357,6 +370,9 @@ init() {
     # Determine the JVM version >= 1.6
     checkJvmVersion
 
+    # Check if a root instance is already running
+    checkRootInstance
+
     # Setup default options
     setupDefaults
 
@@ -368,6 +384,7 @@ init() {
 run() {
     OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true"
     MAIN=org.apache.karaf.main.Main
+    CHECK_ROOT_INSTANCE_RUNNING=true
     while [ "$1" != "" ]; do
         case $1 in
             'clean')
@@ -383,13 +400,16 @@ run() {
                 ;;
             'status')
                 MAIN=org.apache.karaf.main.Status
+                CHECK_ROOT_INSTANCE_RUNNING=false
                 shift
                 ;;
             'stop')
                 MAIN=org.apache.karaf.main.Stop
+                CHECK_ROOT_INSTANCE_RUNNING=false
                 shift
                 ;;
             'console')
+                CHECK_ROOT_INSTANCE_RUNNING=false
                 shift
                 ;;
             'server')
@@ -404,6 +424,7 @@ run() {
                 ;;
             'client')
                 OPTS="-Dkaraf.startLocalConsole=true 
-Dkaraf.startRemoteShell=false"
+                CHECK_ROOT_INSTANCE_RUNNING=false
                 shift
                 ;;
             *)
@@ -447,22 +468,26 @@ run() {
             mkdir -p "$KARAF_DATA/log"
         fi
 
-        $KARAF_EXEC "$JAVA" $JAVA_OPTS \
-            -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" \
-            -Djava.ext.dirs="${JAVA_EXT_DIRS}" \
-            -Dkaraf.instances="${KARAF_HOME}/instances" \
-            -Dkaraf.home="$KARAF_HOME" \
-            -Dkaraf.base="$KARAF_BASE" \
-            -Dkaraf.data="$KARAF_DATA" \
-            -Dkaraf.etc="$KARAF_ETC" \
-            -Dkaraf.restart.jvm.supported=true \
-            -Djava.io.tmpdir="$KARAF_DATA/tmp" \
-            
-Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" \
-            $KARAF_SYSTEM_OPTS \
-            $KARAF_OPTS \
-            $OPTS \
-            -classpath "$CLASSPATH" \
-            $MAIN "$@"
+        if [ "$ROOT_INSTANCE_RUNNING" = "false" ] || [ 
"$CHECK_ROOT_INSTANCE_RUNNING" = "false" ] ; then
+            $KARAF_EXEC "$JAVA" $JAVA_OPTS \
+                -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" \
+                -Djava.ext.dirs="${JAVA_EXT_DIRS}" \
+                -Dkaraf.instances="${KARAF_HOME}/instances" \
+                -Dkaraf.home="$KARAF_HOME" \
+                -Dkaraf.base="$KARAF_BASE" \
+                -Dkaraf.data="$KARAF_DATA" \
+                -Dkaraf.etc="$KARAF_ETC" \
+                -Dkaraf.restart.jvm.supported=true \
+                -Djava.io.tmpdir="$KARAF_DATA/tmp" \
+                
-Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" \
+                $KARAF_SYSTEM_OPTS \
+                $KARAF_OPTS \
+                $OPTS \
+                -classpath "$CLASSPATH" \
+                $MAIN "$@"
+        else
+            die "There is a Root instance already running with name 
$ROOT_INSTANCE_NAME and pid $ROOT_INSTANCE_PID"
+        fi
 
         KARAF_RC=$?
         if [ $KARAF_DAEMON ] ; then

Reply via email to