diff options
| author | Simon Rettberg | 2016-02-22 13:07:16 +0100 |
|---|---|---|
| committer | Simon Rettberg | 2016-02-22 13:07:16 +0100 |
| commit | 097395d77dd6bc20c9186795463a9f510bc3874a (patch) | |
| tree | a074460fd66c3221dcf3829e568e6dfcd088a9d8 /dozentenmodulserver/src/main/java/org | |
| parent | [server] Remove debug messages (diff) | |
| download | tutor-module-097395d77dd6bc20c9186795463a9f510bc3874a.tar.gz tutor-module-097395d77dd6bc20c9186795463a9f510bc3874a.tar.xz tutor-module-097395d77dd6bc20c9186795463a9f510bc3874a.zip | |
[server] Write chunks to disk only once
If the upload was faster than the client-side hashing, chunks
were written to disk twice. Once right after upload, then again
after it was read from disk for hashing once the hash was submitted.
Diffstat (limited to 'dozentenmodulserver/src/main/java/org')
| -rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/fileserv/IncomingDataTransfer.java | 13 |
1 files changed, 10 insertions, 3 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 b7daf7d9..7bad59a3 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 @@ -472,6 +472,7 @@ public class IncomingDataTransfer extends AbstractTransfer implements HashCheckC } } } else { + // We have no hash checker or the hash for the current chunk is unknown - flush to disk writeFileData(currentChunk.range.startOffset, currentChunk.range.getLength(), buffer); chunks.markSuccessful(currentChunk); } @@ -511,7 +512,9 @@ public class IncomingDataTransfer extends AbstractTransfer implements HashCheckC + " could not be executed. Assuming valid :-("); // Fall through case VALID: - writeFileData(chunk.range.startOffset, chunk.range.getLength(), data); + if (!chunk.isWrittenToDisk()) { + writeFileData(chunk.range.startOffset, chunk.range.getLength(), data); + } chunks.markSuccessful(chunk); if (chunks.isComplete()) { finishUpload(); @@ -544,10 +547,14 @@ public class IncomingDataTransfer extends AbstractTransfer implements HashCheckC } public void updateBlockHashList(List<byte[]> hashList) { - if (state != TransferState.IDLE && state != TransferState.WORKING) + if (state != TransferState.IDLE && state != TransferState.WORKING) { + LOGGER.debug(this.getId() + ": Rejecting block hash list in state " + state); return; - if (hashChecker == null || hashList == null) + } + if (hashChecker == null || hashList == null) { + LOGGER.debug(this.getId() + ": Rejecting block hash list: No hasher"); return; + } chunks.updateSha1Sums(hashList); FileChunk chunk; while (null != (chunk = chunks.getUnhashedComplete())) { |
