summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
diff options
context:
space:
mode:
authorSimon Rettberg2018-04-13 10:12:17 +0200
committerSimon Rettberg2018-04-13 10:12:17 +0200
commit56e538eba4921e0371a08a272d3790397f2bd460 (patch)
tree9327c407dd33e1037a48fa6c259a3a060dc88244 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java
parent[server] RPC/Maintenance job for image checking (diff)
downloadtutor-module-56e538eba4921e0371a08a272d3790397f2bd460.tar.gz
tutor-module-56e538eba4921e0371a08a272d3790397f2bd460.tar.xz
tutor-module-56e538eba4921e0371a08a272d3790397f2bd460.zip
[server] Calculate DNBD3-CRC32 list of incoming transfers and dump to disk
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java28
1 files changed, 28 insertions, 0 deletions
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 bde280b3..eccf2937 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
@@ -2,6 +2,7 @@ package org.openslx.bwlp.sat.fileserv;
import java.io.File;
import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
@@ -29,6 +30,7 @@ import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.filetransfer.Downloader;
import org.openslx.filetransfer.util.ChunkStatus;
import org.openslx.filetransfer.util.FileChunk;
+import org.openslx.filetransfer.util.HashChecker;
import org.openslx.filetransfer.util.IncomingTransferBase;
import org.openslx.util.ThriftUtil;
import org.openslx.util.vm.DiskImage;
@@ -270,6 +272,21 @@ public class IncomingDataTransfer extends IncomingTransferBase {
cancel();
return false;
}
+ // Dump CRC32 list
+ byte[] dnbd3Crc32List = null;
+ try {
+ dnbd3Crc32List = getChunks().getDnbd3Crc32List();
+ } catch (Exception e) {
+ LOGGER.warn("Could not get CRC32 list for upload of " + image.getImageName(), e);
+ }
+ if (dnbd3Crc32List != null) {
+ String crcfile = destination.getAbsolutePath() + ".crc";
+ try (FileOutputStream fos = new FileOutputStream(crcfile)) {
+ fos.write(dnbd3Crc32List);
+ } catch (Exception e) {
+ LOGGER.warn("Could not write CRC32 list for DNBD3 at " + crcfile, e);
+ }
+ }
return true;
}
@@ -355,6 +372,17 @@ public class IncomingDataTransfer extends IncomingTransferBase {
}
}
+ @Override
+ protected void chunkReceived(FileChunk chunk, byte[] data) {
+ if (getHashChecker() == null)
+ return;
+ try {
+ getHashChecker().queue(chunk, data, null, HashChecker.BLOCKING | HashChecker.CALC_CRC32);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
public String getErrorMessage() {
return errorMessage;
}