From ae0f646cd73486f04ef819750cd4eb9dc9bb7894 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 4 Aug 2015 17:15:25 +0200 Subject: [client] Fix TransferTask initiating a huge amount of connections --- .../org/openslx/dozmod/filetransfer/TransferTask.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java index d2781cb9..45efe72f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java @@ -31,7 +31,7 @@ public abstract class TransferTask implements Runnable { */ private final List listeners = new ArrayList<>(); - private volatile boolean isRunning = true; + private volatile boolean isComplete = false; private volatile boolean isCancelled = false; private boolean endgame = false; private int minConnectionCount = 1; @@ -57,7 +57,6 @@ public abstract class TransferTask implements Runnable { ensureActivity(); Util.sleep(UPDATE_INTERVAL_MS); } - isRunning = false; List joinList = new ArrayList<>(); synchronized (transfers) { isCancelled = true; @@ -79,8 +78,8 @@ public abstract class TransferTask implements Runnable { // By default, this does nothing } - public boolean isRunning() { - return isRunning; + public boolean isComplete() { + return isComplete; } public boolean isCanceled() { @@ -140,7 +139,7 @@ public abstract class TransferTask implements Runnable { private final void ensureActivity() { synchronized (transfers) { - if (isCancelled) + if (isCancelled || isComplete) return; if (endgame && (!transfers.isEmpty() || !connectingTransfers.isEmpty())) return; @@ -157,8 +156,6 @@ public abstract class TransferTask implements Runnable { thread.setDaemon(true); connectingTransfers.add(thread); thread.start(); - LOGGER.debug("Made new transfer. Connecting: " + connectingTransfers.size() - + ", Active: " + transfers.size()); } } } @@ -201,10 +198,12 @@ public abstract class TransferTask implements Runnable { LOGGER.debug("Enabled endgame mode"); endgame = true; } + if (success && transfers.isEmpty()) { + LOGGER.debug("Transfer finished"); + isComplete = true; + } } - if (!endgame) { - ensureActivity(); - } + ensureActivity(); } /** -- cgit v1.2.3-55-g7522