-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Issue
SizeChunker._finishChunk is not waiting for SizeChunker._startIfNeededAndPushData to finish first (chunkStart to finish). It results in following error.
Code
var path = require("path");
var fs = require("fs-extra");
var inFile = "/Users/krishnakantsharma/tmp/chunker/infile.mkv"; // size is around 233 mb
var outFolder = "/Users/krishnakantsharma/tmp/chunker/out";
var fileSize = fs.statSync(inFile).size;
var chunkSize = 50000000;
var expectedChunks = Math.ceil(fileSize/chunkSize);
var chunker = new require("chunking-streams").SizeChunker({
chunkSize: chunkSize,
flushTail: true,
});
console.log('expectedChunks', expectedChunks);
var ws;
chunker.on("chunkStart", function(id, done) {
console.log("chunkStart", id);
var chunkFile = path.resolve(outFolder, "chunk"+id+".mkv");
fs.ensureFile(chunkFile, function(err) {
if(err) {
return done(err);
}
ws = fs.createWriteStream(chunkFile);
done();
});
});
chunker.on("chunkEnd", function(id, done) {
console.log("chunkEnd", id);
ws.end();
done();
});
chunker.on("data", function(chunk) {
ws.write(chunk.data);
});
fs.createReadStream(inFile).pipe(chunker);Output of the above code was
expectedChunks 5
chunkStart 0
chunkStart 1
chunkStart 2
chunkStart 3
chunkStart 4
chunkStart 5
chunkStart 6
chunkEnd 6
chunkStart 7
chunkStart 8
chunkStart 9
chunkStart 10
chunkStart 11
chunkEnd 11
chunkStart 12
chunkStart 13
chunkStart 14
chunkStart 15
chunkStart 16
chunkStart 17
chunkEnd 17
chunkStart 18
chunkStart 19
chunkStart 20
chunkStart 21
chunkStart 22
chunkStart 23
chunkEnd 23
chunkStart 24
chunkStart 25
chunkStart 26
chunkStart 27
chunkStart 28
chunkEnd 28
After the fix, output was [Fix is in the pull request]
expectedChunks 5
chunkStart 0
chunkEnd 0
chunkStart 1
chunkEnd 1
chunkStart 2
chunkEnd 2
chunkStart 3
chunkEnd 3
chunkStart 4
chunkEnd 4

