modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java | 15 +++++++---
modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessToStart.java | 7 ++++
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java | 4 +-
3 files changed, 19 insertions(+), 7 deletions(-)
New commits:
commit 1f1b77f0c84681ea4d590b627dad7c6be0e6ca23
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Thu Feb 21 16:32:40 2013 +0100
schell script for running processes in background
Conflicts:
modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessToStart.java
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
diff --git a/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java b/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
index 35612a8..6b5f16c 100644
--- a/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
+++ b/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessExecutor.java
@@ -53,7 +53,9 @@ import org.rhq.core.util.UtilI18NResourceKeys;
public class ProcessExecutor {
private static ExecutorService threadPool = Executors.newCachedThreadPool();
- private static String RUN_IN_BACKGROUND_SUFFIX = " & wait $!";
+
+ // HC
+ private static String RUN_IN_BACKGROUND_PREFIX = " /home/jkremser/background.sh";
/**
* This executes any operating system process as described in the given start command. When this method returns, it
@@ -477,10 +479,15 @@ public class ProcessExecutor {
// +1 for the program executable path and possibly +1 for the RUN_IN_BACKGROUND_SUFFIX
String[] retCmdline = new String[numArgs + 1 + (process.isSeparatedFromParent() ? 1 : 0)];
- retCmdline[0] = fullProgramPath;
-
if (numArgs > 0) {
- System.arraycopy(args, 0, retCmdline, 1, numArgs);
+ System.arraycopy(args, 0, retCmdline, (process.isSeparatedFromParent() ? 2 : 1), numArgs);
+ }
+
+ if (process.isSeparatedFromParent()) {
+ retCmdline[0] = RUN_IN_BACKGROUND_PREFIX;
+ retCmdline[1] = fullProgramPath;
+ } else {
+ retCmdline[0] = fullProgramPath;
}
if (process.isSeparatedFromParent()) {
diff --git a/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessToStart.java b/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessToStart.java
index af8ca1c..c1ed236 100644
--- a/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessToStart.java
+++ b/modules/core/util/src/main/java/org/rhq/core/util/exec/ProcessToStart.java
@@ -636,8 +636,13 @@ public class ProcessToStart {
// flag is optional, but non-nullable; remove it if null is passed in
if (value != null) {
map.put(PARAM_SEPARATED_FROM_PARENT, value);
+ String[] envProps = getEnvironment();
+ String[] newEnvProps = new String[envProps.length + 1];
+ System.arraycopy(envProps, 0, newEnvProps, 0, envProps.length);
+ newEnvProps[envProps.length] = "RHQ_CONTROL_WAIT=true";
+ setEnvironment(newEnvProps);
} else {
map.remove(PARAM_SEPARATED_FROM_PARENT);
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
index 6c01d67..c48f102 100644
--- a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
+++ b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
@@ -200,7 +200,7 @@ public class AgentMain {
/**
* The directory where this agent is installed.
*/
- private String m_agentHomeDirectory;
+ private static String m_agentHomeDirectory;
/**
* The command line arguments specified by the user.
@@ -526,7 +526,7 @@ public class AgentMain {
*
* @return agent home directory, or empty string if it cannot be determined
*/
- public String getAgentHomeDirectory() {
+ public static String getAgentHomeDirectory() {
if (m_agentHomeDirectory != null) {
return m_agentHomeDirectory;
}