summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2016-02-25 17:01:07 +0100
committerJonathan Bauer2016-02-25 17:01:07 +0100
commit4645342521f11c4b96a4fe07fc09dcfaee9ad4fd (patch)
tree6847b0011cc468b67f10bec68f75c9abfa7123fb
parent[client] fix stupid way of getting the sat's address for the root node of the... (diff)
parent[server] Log delete actions on images (diff)
downloadtutor-module-4645342521f11c4b96a4fe07fc09dcfaee9ad4fd.tar.gz
tutor-module-4645342521f11c4b96a4fe07fc09dcfaee9ad4fd.tar.xz
tutor-module-4645342521f11c4b96a4fe07fc09dcfaee9ad4fd.zip
Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java25
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java6
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java9
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/Formatter.java2
4 files changed, 31 insertions, 11 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
index bff973b5..71c7add8 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
@@ -96,7 +96,10 @@ public class UploadTask extends TransferTask {
remoteError = null;
consecutiveInitFails.set(0);
} else {
- remoteError = uploader.getRemoteError();
+ String err = uploader.getRemoteError();
+ if (err != null) {
+ remoteError = err;
+ }
consecutiveInitFails.incrementAndGet();
}
transferEnded(this, ret);
@@ -143,18 +146,20 @@ public class UploadTask extends TransferTask {
speed += thread.getCurrentSpeed();
}
}
- // 0 = complete, 1 = missing, 2 = uploading, 3 = queued for copying, 4 = copying
- if (blocks != null) {
- int missing = 0;
- for (byte b : blocks) {
- if (b != 0) {
- missing++;
+ if (speed != 0) {
+ // 0 = complete, 1 = missing, 2 = uploading, 3 = queued for copying, 4 = copying, 5 = hashing
+ if (blocks != null) {
+ int missing = 0;
+ for (byte b : blocks) {
+ if (b != 0) {
+ missing++;
+ }
}
+ final long bytesRemaining = CHUNK_SIZE * (long) missing;
+ timeRemaining = (1000 * bytesRemaining) / (speed + 1);
}
- final long bytesRemaining = CHUNK_SIZE * (long) missing;
- timeRemaining = (1000 * bytesRemaining) / (speed + 1);
}
- if (error == null && remoteError != null) {
+ if (remoteError != null && (error == null || remoteError.equals("Out of disk space"))) {
error = remoteError;
}
TransferEvent event = new TransferEvent(state, blocks, speed, timeRemaining, error);
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
index 7bad59a3..92f533e8 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
@@ -489,8 +489,12 @@ public class IncomingDataTransfer extends AbstractTransfer implements HashCheckC
return null; // No more chunks, returning null tells the Downloader we're done.
}
// Check remaining disk space and abort if it's too low
- if (FileSystem.getAvailableStorageBytes() < MIN_FREE_SPACE_BYTES) {
+ long space = FileSystem.getAvailableStorageBytes();
+ if (space != -1 && space < MIN_FREE_SPACE_BYTES) {
downloader.sendErrorCode("Out of disk space");
+ LOGGER.error("Out of space: Cancelling upload of "
+ + (image == null ? "image" : image.imageName) + " by "
+ + Formatter.userFullName(owner));
cancel();
return null;
}
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
index 3244ac95..0ea9921d 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
@@ -29,6 +29,7 @@ import org.openslx.bwlp.sat.thrift.cache.OperatingSystemList;
import org.openslx.bwlp.sat.thrift.cache.OrganizationList;
import org.openslx.bwlp.sat.thrift.cache.VirtualizerList;
import org.openslx.bwlp.sat.util.FileSystem;
+import org.openslx.bwlp.sat.util.Formatter;
import org.openslx.bwlp.sat.util.Sanitizer;
import org.openslx.bwlp.sat.util.Util;
import org.openslx.bwlp.thrift.iface.AuthorizationError;
@@ -358,8 +359,13 @@ public class ServerHandler implements SatelliteServer.Iface {
throw new TInvocationException(InvocationError.INTERNAL_SERVER_ERROR, "VM storage not mounted");
User.canDeleteImageVersionOrFail(user, imageVersionId);
try {
+ ImageSummaryRead imageSummary = DbImage.getImageSummary(user,
+ DbImage.getBaseIdForVersionId(imageVersionId));
DbImage.markForDeletion(imageVersionId);
DbImage.setDeletion(DeleteState.WANT_DELETE, imageVersionId);
+ LOGGER.info(Formatter.userFullName(user) + " (" + user.userId + ") deleted Version "
+ + imageVersionId + " of " + imageSummary.imageName + " (" + imageSummary.imageBaseId
+ + ")");
} catch (SQLException e) {
throw new TInvocationException();
}
@@ -393,6 +399,9 @@ public class ServerHandler implements SatelliteServer.Iface {
}
DeleteOldImages.hardDeleteImages();
}
+ LOGGER.info(Formatter.userFullName(user) + " (" + user.userId + ") deleted Image "
+ + imageDetails.imageName + " (" + imageDetails.imageBaseId + ") with all its versions ("
+ + index + ")");
try {
DbImage.deleteBasePermanently(imageBaseId);
} catch (SQLException e) {
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/Formatter.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/Formatter.java
index d242d5be..f13df0eb 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/Formatter.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/util/Formatter.java
@@ -57,6 +57,8 @@ public class Formatter {
}
public static String userFullName(UserInfo ui) {
+ if (ui == null)
+ return "null";
return ui.firstName + " " + ui.lastName;
}