summaryrefslogtreecommitdiffstats
path: root/api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java')
-rw-r--r--api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java41
1 files changed, 21 insertions, 20 deletions
diff --git a/api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java b/api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java
index 18c8ecc..4754dca 100644
--- a/api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java
+++ b/api/src/main/java/org/openslx/taskmanager/api/SystemCommandTask.java
@@ -7,13 +7,15 @@ import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public abstract class SystemCommandTask extends AbstractTask
{
- private static final Logger log = Logger.getLogger( SystemCommandTask.class );
+ private static final Logger log = LogManager.getLogger( SystemCommandTask.class );
private String[] command = null;
@@ -39,8 +41,8 @@ public abstract class SystemCommandTask extends AbstractTask
if ( command == null || command.length == 0 ) {
return processEnded( -1 );
}
- for (String a : command) {
- if (a == null) {
+ for ( String a : command ) {
+ if ( a == null ) {
log.warn( "An argument from initCommandLine is null: " + Arrays.toString( command ) );
return processEnded( -5 );
}
@@ -48,7 +50,12 @@ public abstract class SystemCommandTask extends AbstractTask
ProcessBuilder pb = new ProcessBuilder( command );
pb.directory( new File( "/" ) );
- initEnvironment( pb.environment() );
+ Map<String, String> env = pb.environment();
+ if ( Environment.get() != null ) {
+ env.clear();
+ env.putAll( Environment.get() );
+ }
+ initEnvironment( env );
try {
@@ -104,23 +111,15 @@ public abstract class SystemCommandTask extends AbstractTask
// Wait for everything
int retval = 124; // Default to 124, which is what the timeout util does
- if ( this.timeoutSeconds <= 0 ) {
- retval = process.waitFor();
- } else {
- int togo = timeoutSeconds * 10;
- while ( togo-- > 0 ) {
- try {
+ try {
+ if ( this.timeoutSeconds <= 0 ) {
+ retval = process.waitFor();
+ } else {
+ if ( process.waitFor( this.timeoutSeconds, TimeUnit.SECONDS ) ) {
retval = process.exitValue();
- break;
- } catch ( IllegalThreadStateException e1 ) {
- // Still running....
- try {
- Thread.sleep( 100 );
- } catch ( Exception e2 ) {
- // Bummer....
- }
}
}
+ } catch ( IllegalThreadStateException e1 ) {
}
try {
stdout.join( 500 );
@@ -149,8 +148,9 @@ public abstract class SystemCommandTask extends AbstractTask
Thread.currentThread().interrupt();
return false;
} finally {
- if ( process != null )
+ if ( process != null ) {
process.destroy();
+ }
}
}
@@ -211,6 +211,7 @@ public abstract class SystemCommandTask extends AbstractTask
/**
* Override this to modify the environment of the process to be started.
+ *
* @param environment
*/
protected void initEnvironment( Map<String, String> environment )