diff options
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java')
-rw-r--r-- | src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java b/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java index 725b7ab..34f7b07 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java +++ b/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java @@ -3,6 +3,7 @@ package org.openslx.taskmanager.tasks; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import org.openslx.satserver.util.Constants; import org.openslx.taskmanager.api.SystemCommandTask; @@ -15,6 +16,8 @@ public class LdadpLauncher extends SystemCommandTask private int[] ids = null; private Output status = new Output(); + + private static AtomicBoolean isRunning = new AtomicBoolean(); @Override protected boolean initTask() @@ -30,6 +33,10 @@ public class LdadpLauncher extends SystemCommandTask @Override protected String[] initCommandLine() { + if (!isRunning.compareAndSet( false, true )) { + status.addMessage( "Another operation is already in progress." ); + return null; + } List<String> args = new ArrayList<>(); args.addAll( Arrays.asList( new String[] { "/usr/bin/sudo", @@ -48,6 +55,7 @@ public class LdadpLauncher extends SystemCommandTask @Override protected boolean processEnded( int exitCode ) { + isRunning.set( false ); return exitCode == 0; } |