summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodulserver/src/main/java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowFinalizer.java7
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowSession.java13
2 files changed, 15 insertions, 5 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowFinalizer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowFinalizer.java
index 67f38634..9cb1788c 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowFinalizer.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowFinalizer.java
@@ -47,6 +47,8 @@ public class CowFinalizer {
private int progressPercent;
+ private String imageBaseId;
+
private CowSession cowSession;
public CowFinalizer(CowSessionData data, CowSession cowSession) {
@@ -71,6 +73,10 @@ public class CowFinalizer {
public int progressPercent() {
return this.progressPercent;
}
+
+ public String imageBaseId() {
+ return this.imageBaseId;
+ }
public String getError() {
return this.error;
@@ -187,6 +193,7 @@ public class CowFinalizer {
}
baseId = DbImage.createImage(data.owner, ibw.imageName);
DbImage.updateImageMetadata(null, baseId, ibw);
+ CowFinalizer.this.imageBaseId = baseId;
}
DbImage.createImageVersion(baseId, uuid, data.owner, data.newFileSize(),
relPath, new ImageVersionWrite(data.restricted), hashesDone ? chunks : null,
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowSession.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowSession.java
index fdcea27b..ad2b1834 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowSession.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/cow/CowSession.java
@@ -177,6 +177,8 @@ public class CowSession {
if (finalizer != null) {
ret.tasks.add(new ProgressItem("Hashing modified image", finalizer.progressPercent(),
finalizer.getError()));
+ // This is set if this is a COPY operation and the final image meta data has been written
+ ret.imageBaseId = finalizer.imageBaseId();
}
ret.state = this.status.name();
return Json.serialize(ret);
@@ -366,12 +368,11 @@ public class CowSession {
if (estimatedSpeedKbs > 0) {
delay = (int) ((missing / 1000) / estimatedSpeedKbs);
}
- if (delay < 1) {
- delay = 1;
+ if (delay > 10) {
+ LOGGER.info("Throttling client - Missing: " + Util.formatBytes(missing) + ", Speed: "
+ + Util.formatBytes(estimatedSpeedKbs * 1000) + "/s, Wait: " + delay);
}
- LOGGER.info("Throttling client - Missing: " + Util.formatBytes(missing) + ", Speed: "
- + Util.formatBytes(estimatedSpeedKbs * 1000) + "/s, Wait: " + delay);
- return delay;
+ return delay + 2; // Add some extra margin
}
try {
destinationFile.seek(filePos);
@@ -489,6 +490,8 @@ public class CowSession {
@SuppressWarnings("unused")
String state;
List<ProgressItem> tasks = new ArrayList<>();
+ @SuppressWarnings("unused")
+ String imageBaseId;
}
}