diff options
author | Simon Rettberg | 2015-09-28 18:01:53 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-28 18:01:53 +0200 |
commit | 2469aaed02281c58173d3cfbde88482690c3d6af (patch) | |
tree | 223fba7da5c455809794545060aed2e1292b293b /src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java | |
parent | [mount-store] Beefed up retry logic (diff) | |
download | tmlite-bwlp-2469aaed02281c58173d3cfbde88482690c3d6af.tar.gz tmlite-bwlp-2469aaed02281c58173d3cfbde88482690c3d6af.tar.xz tmlite-bwlp-2469aaed02281c58173d3cfbde88482690c3d6af.zip |
Allow only one running instance of critical tasks
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java')
-rw-r--r-- | src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java b/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java index ded2a1f..5d075d6 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java +++ b/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java @@ -1,5 +1,7 @@ package org.openslx.taskmanager.tasks; +import java.util.concurrent.atomic.AtomicBoolean; + import org.openslx.satserver.util.Constants; import org.openslx.taskmanager.api.SystemCommandTask; @@ -17,6 +19,8 @@ public class MountVmStore extends SystemCommandTask private String password = null; private Output status = new Output(); + + private static AtomicBoolean isRunning = new AtomicBoolean(); @Override protected boolean initTask() @@ -37,6 +41,10 @@ public class MountVmStore extends SystemCommandTask @Override protected String[] initCommandLine() { + if (!isRunning.compareAndSet( false, true )) { + status.addMessage("Another operation is already in progress."); + return null; + } return new String[] { "/usr/bin/sudo", "-n", @@ -52,6 +60,7 @@ public class MountVmStore extends SystemCommandTask @Override protected boolean processEnded( int exitCode ) { + isRunning.set( false ); if ( exitCode != 0 ) status.addMessage( "Failed with exit code " + exitCode ); return exitCode == 0; |