diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
index 9d9921d29377110c6c0bff1f2f5964c0558a6e95..74e3301679bc31f38ecdc1da9f5f41bf9323ff56 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
@@ -238,7 +238,12 @@ public class Job {
 	synchronized public void download(Predicate<String> predicate, ProgressNotifier notifier) {
 		List<String> files = getHaaSClient().getChangedFiles(jobId).stream().filter(predicate).collect(Collectors.toList());
 		try (HaaSFileTransfer transfer =  haasClientSupplier.get().startFileTransfer(getId(), HaaSClient.DUMMY_TRANSFER_FILE_PROGRESS)) {
-			List<Long> fileSizes = transfer.obtainSize(files);
+			List<Long> fileSizes;
+			try {
+				fileSizes = transfer.obtainSize(files);
+			} catch (InterruptedIOException e1) {
+				return;
+			}
 			final long totalFileSize = fileSizes.stream().mapToLong(i -> i.longValue()).sum();
 			TransferFileProgressForHaaSClient progress = new TransferFileProgressForHaaSClient(totalFileSize, notifier);
 			transfer.setProgress(progress);
@@ -336,7 +341,11 @@ public class Job {
 
 		try (HaaSFileTransfer transfer = getHaaSClient().startFileTransfer(getId(),
 				HaaSClient.DUMMY_TRANSFER_FILE_PROGRESS)) {
-			return transfer.obtainSize(names);
+			try {
+				return transfer.obtainSize(names);
+			} catch (InterruptedIOException e) {
+				return Collections.emptyList();
+			}
 		}
 	}
 
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/PersistentSynchronizationProcess.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/PersistentSynchronizationProcess.java
index 767686f987c70c9ffb0f9844b582e3a2a03c3e2b..524e1048fc6d7260b1861254126e9fd43ed552ab 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/PersistentSynchronizationProcess.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/PersistentSynchronizationProcess.java
@@ -91,18 +91,23 @@ public abstract class PersistentSynchronizationProcess<T> {
 
 	abstract protected void processItem(HaaSFileTransfer tr, T p) throws InterruptedIOException;
 
-	abstract protected long getTotalSize(Iterable<T> items, HaaSFileTransfer tr);
+	abstract protected long getTotalSize(Iterable<T> items, HaaSFileTransfer tr) throws InterruptedIOException;
 
 	private void doProcess(AtomicBoolean reRun) {
 		boolean interrupted = false;
 		
 		notifier.addItem(INIT_TRANSFER_ITEM);
+		runningTransferThreads.add(Thread.currentThread());
 		try (HaaSFileTransfer tr = fileTransferSupplier.get()) {
-			TransferFileProgressForHaaSClient notifier;
-			tr.setProgress(notifier = getTransferFileProgress(tr));
-			runningTransferThreads.add(Thread.currentThread());
-			notifier.itemDone(INIT_TRANSFER_ITEM);
-			while (!toProcessQueue.isEmpty()) {
+			TransferFileProgressForHaaSClient notifier = DUMMY_FILE_PROGRESS;
+			try {
+				tr.setProgress(notifier = getTransferFileProgress(tr));
+			} catch (InterruptedIOException e1) {
+				interrupted = true;
+			}
+			
+			this.notifier.itemDone(INIT_TRANSFER_ITEM);
+			while (!interrupted && !toProcessQueue.isEmpty()) {
 				T p = toProcessQueue.poll();
 				String item = p.toString(); 
 				notifier.addItem(item);
@@ -116,9 +121,9 @@ public abstract class PersistentSynchronizationProcess<T> {
 				notifier.itemDone(item);
 				reRun.set(false);
 			}
-			runningTransferThreads.remove(Thread.currentThread());
 			notifier.done();
 		} finally {
+			runningTransferThreads.remove(Thread.currentThread());
 			synchronized (this) {
 				if (startFinished) {
 					if(!interrupted && !Thread.interrupted()) {
@@ -130,6 +135,7 @@ public abstract class PersistentSynchronizationProcess<T> {
 				}
 			}
 		}
+		log.info("doProcess - done - " + Thread.currentThread().isInterrupted());
 	}
 
 	private void fileUploaded(T p) {
@@ -141,7 +147,7 @@ public abstract class PersistentSynchronizationProcess<T> {
 		}
 	}
 
-	private TransferFileProgressForHaaSClient getTransferFileProgress(HaaSFileTransfer tr) {
+	private TransferFileProgressForHaaSClient getTransferFileProgress(HaaSFileTransfer tr) throws InterruptedIOException {
 		if (notifier == null) {
 			return DUMMY_FILE_PROGRESS;
 		}
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/Synchronization.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/Synchronization.java
index 268e5a46c3097ce8646ed2eaaab9ee84c92cc951..0206e91f7336d2731fa7e01edd6aae4297d52549 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/Synchronization.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/data_transfer/Synchronization.java
@@ -164,8 +164,7 @@ public class Synchronization {
 		}
 
 		@Override
-		protected long getTotalSize(Iterable<String> items, HaaSFileTransfer tr) {
-			
+		protected long getTotalSize(Iterable<String> items, HaaSFileTransfer tr) throws InterruptedIOException {
 			return tr.obtainSize( StreamSupport.stream(items.spliterator(), false).collect(Collectors.toList())).stream().collect(Collectors.summingLong(val->val));
 		}
 		
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransfer.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransfer.java
index 59d482ece293f89140bab989a57ca47bc74aa12c..2cf9b14969f30fb9cb8404e4bb0f8cb125ee4d76 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransfer.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransfer.java
@@ -18,7 +18,7 @@ public interface HaaSFileTransfer extends Closeable {
 
 	void download(String files, Path workDirectory) throws InterruptedIOException;
 
-	List<Long> obtainSize(List<String> files);
+	List<Long> obtainSize(List<String> files) throws InterruptedIOException;
 
 	List<String> getContent(List<String> logs);
 	
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransferImp.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransferImp.java
index 90e117b58c83f970a0fb909f4cfe10ac73dc6b83..9a9fba8bca97c62abdb412833c7e7af408769ead 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransferImp.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSFileTransferImp.java
@@ -75,10 +75,12 @@ class HaaSFileTransferImp implements HaaSFileTransfer {
 	}
 	
 	@Override
-	public List<Long> obtainSize(List<String> files) {
+	public List<Long> obtainSize(List<String> files) throws InterruptedIOException {
 		try {
 			return getSizes(files.stream()
 					.map(filename -> "'" + ft.getSharedBasepath() + "/" + filename + "'").collect(Collectors.toList()));
+		} catch (InterruptedIOException e) {
+			throw e;
 		} catch (JSchException | IOException e) {
 			throw new HaaSClientException(e);
 		}