Open pavelhoral opened 5 months ago
Getting closer to the culprit - seems like the globStream
is closed before the pipeline starts flowing. Seems like the issue is that walking is started immediatelly upon stream construction - https://github.com/gulpjs/glob-stream/blob/77826594b4479fe5fefd6a751c28c7f686c24a87/index.js#L286C6-L286C16 and the empty stream can end before the whole pipeline starts flowing.
Got the following sample that IMO illustrates what is happening:
const readable = new Readable();
nextTick(() => readable.push(null));
pipeline(Readable.from([]), toThrough(readable))
.on('data', () => {})
.on('end', done); // -> never called
What were you expecting to happen?
I have the following Vitest-based test in my project:
This test should end without any error. However once in a 10 tries it ends up with timeout (running with vitest). There is a switched order of
flush
/end
events in the second vinyl stream. The issue happens more often if the first glob stream actually matches some files.I am still trying to find the root cause - whether it is in streamx, to-through or gulp-stream (already spent 8 hours getting to this point so I am quite exhausted).
Terminal output
Successful run:
Failed run:
Please provide the following information:
Library versions (only Gulp 5.0.0 is in my package.json so the rest is transitive):
Tested on OSX with NodeJS v20.12.2 and on Kubuntu 24.04 with NodeJS v22.3.0.