summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java
diff options
context:
space:
mode:
authorSimon Rettberg2022-03-21 17:22:16 +0100
committerSimon Rettberg2022-03-21 17:22:16 +0100
commitad0788e8fbead90d1ab03ba1a5c83b00114cb3a0 (patch)
treeaf62b617fb6149afce16d417474abd49f373cbf9 /dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java
parent[client] Cleanup chunk data lists when upload finished or is cancelled (diff)
downloadtutor-module-ad0788e8fbead90d1ab03ba1a5c83b00114cb3a0.tar.gz
tutor-module-ad0788e8fbead90d1ab03ba1a5c83b00114cb3a0.tar.xz
tutor-module-ad0788e8fbead90d1ab03ba1a5c83b00114cb3a0.zip
[client] Memory management; handle OOM when hashing, do not skip blocks
Try to free some references regarding transfers earlier, e.g. the hash worker and list of hashes as soon as hashing is finished on upload, not only when the upload is finished and the window is closed. Properly delay hashing of blocks in OOM scenarios, and be more conservative with the number of hash workers, i.e. take maximum JVM memory into account. Also, improve thread naming.
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java14
1 files changed, 9 insertions, 5 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 cca42929..4f7ed6fe 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java
@@ -69,7 +69,7 @@ public abstract class TransferTask implements Runnable, TransferEventEmitter {
ensureActivity();
Util.sleep(UPDATE_INTERVAL_MS);
}
- LOGGER.info("Transfer worker mainloop finished");
+ LOGGER.debug("Transfer worker mainloop finished");
List<TransferThread> joinList = new ArrayList<>();
synchronized (transfers) {
isCancelled = true;
@@ -85,7 +85,7 @@ public abstract class TransferTask implements Runnable, TransferEventEmitter {
Util.joinThread(t);
}
cleanup();
- LOGGER.info("Trasfer worker exiting");
+ LOGGER.info("Transfer worker exiting");
}
protected void cleanup() {
@@ -197,7 +197,7 @@ public abstract class TransferTask implements Runnable, TransferEventEmitter {
protected final void connectFailed(TransferThread thread) {
synchronized (transfers) {
connectingTransfers.remove(thread);
- LOGGER.info("Establishing new transfer connection failed, [a:" + transfers.size() + "/c:"
+ LOGGER.debug("Establishing new transfer connection failed, [a:" + transfers.size() + "/c:"
+ connectingTransfers.size() + "]");
}
}
@@ -207,7 +207,7 @@ public abstract class TransferTask implements Runnable, TransferEventEmitter {
connectingTransfers.remove(thread);
if (!isCancelled) {
transfers.add(thread);
- LOGGER.info("Establishing new transfer connection succeeded, [a:" + transfers.size() + "/c:"
+ LOGGER.debug("Establishing new transfer connection succeeded, [a:" + transfers.size() + "/c:"
+ connectingTransfers.size() + "]");
return;
}
@@ -219,7 +219,7 @@ public abstract class TransferTask implements Runnable, TransferEventEmitter {
protected final void transferEnded(TransferThread thread, boolean success) {
synchronized (transfers) {
transfers.remove(thread);
- LOGGER.info("A transfer connection has finished (success=" + success + "), [a:" + transfers.size() + "/c:"
+ LOGGER.debug("A transfer connection has finished (success=" + success + "), [a:" + transfers.size() + "/c:"
+ connectingTransfers.size() + "]");
if (endgame && !success && transfers.isEmpty()) {
// We had a transfer that reported success before, so we assume there are no more pending blocks
@@ -262,6 +262,10 @@ public abstract class TransferTask implements Runnable, TransferEventEmitter {
}
protected abstract static class TransferThread extends Thread {
+
+ public TransferThread(String name) {
+ super(name);
+ }
@Override
public abstract void run();