diff options
author | Simon Rettberg | 2018-04-13 10:12:17 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-04-13 10:12:17 +0200 |
commit | 56e538eba4921e0371a08a272d3790397f2bd460 (patch) | |
tree | 9327c407dd33e1037a48fa6c259a3a060dc88244 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java | |
parent | [server] RPC/Maintenance job for image checking (diff) | |
download | tutor-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.java | 28 |
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; } |