summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-04 17:15:25 +0200
committerSimon Rettberg2015-08-04 17:15:25 +0200
commitae0f646cd73486f04ef819750cd4eb9dc9bb7894 (patch)
tree3a39b6a3228aa06ab7741f33f256a81fd807a4a0
parent[client] Synchronize logging events in DebugWindow (diff)
downloadtutor-module-ae0f646cd73486f04ef819750cd4eb9dc9bb7894.tar.gz
tutor-module-ae0f646cd73486f04ef819750cd4eb9dc9bb7894.tar.xz
tutor-module-ae0f646cd73486f04ef819750cd4eb9dc9bb7894.zip
[client] Fix TransferTask initiating a huge amount of connections
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java19
1 files 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<TransferEventListener> 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<TransferThread> 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();
}
/**