diff options
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java')
-rw-r--r-- | src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java b/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java index 20f5363..9501e43 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java +++ b/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java @@ -2,6 +2,7 @@ package org.openslx.taskmanager.tasks; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import org.openslx.satserver.util.Constants; import org.openslx.taskmanager.api.SystemCommandTask; @@ -20,6 +21,8 @@ public class BackupRestore extends SystemCommandTask private boolean restoreDozmod; private Output status = new Output(); + + private static AtomicBoolean isRunning = new AtomicBoolean(); @Override protected boolean initTask() @@ -44,6 +47,10 @@ public class BackupRestore 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.add( "/usr/bin/sudo" ); args.add( "-n" ); @@ -67,6 +74,7 @@ public class BackupRestore extends SystemCommandTask @Override protected boolean processEnded( int exitCode ) { + isRunning.set( false ); return exitCode == 0 && ( mode.equals( "restore" ) || status.backupFile != null ); } |