Skip to content

SizeChunker is not wating for chunkStart to finish before running _finishChunk #8

@kksharma1618

Description

@kksharma1618

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

And content of outFolder
screenshot 2015-06-19 11 32 33

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

And content of outFolder
screenshot 2015-06-19 11 35 27

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions