Repository navigation
Support bufferSize option with recursive mode in fs.opendir #55764
Description
Activity
- addedconfirmed-bugIssues and PRs for confirmed bugs.Issues and PRs for confirmed bugs.fsIssues and PRs related to file-system APIs and the fs module.Issues and PRs related to file-system APIs and the fs module.good first issueIssues that are suitable for first-time contributors.Issues that are suitable for first-time contributors.
on Nov 7, 2024 If someone would like to submit a fix here, I'm happy to help you land the contribution. Otherwise, I'll work on it eventually.
Reacted by 0hm☘️ and KunalHey I would love to work on this!
Reacted by Ethan ArrowoodAwesome! Feel free to request my review on your PR. I'll keep track of notifications here as well. Reach out to me in the OpenJS Slack if you have any questions
Reacted by 0hm☘️I'm here if you need help
@Ethan-Arrowood Can you clarify what further changes is needed in
lib/internal/fs/dir.js?
seems you made some changes there already@KunalKumar-1 from what i saw its was a temporary patch to get around the problem. probably have to rewrite this.
Reacted by Ethan Arrowood and KunalYes, the changes I added does not actually respect the
bufferSizeoption, but it at least will return the full contents of a directory. The change I'm requesting here is that we figure out how to properly supportbufferSizeoption.My loose idea for a solution would be to add a new queue to the
Dirclass, something like#handlers, and as things are read, if its in recursive mode, and the current item is a directory, create a handle for that directory, do the read operation (while respectingbufferSize), and if there is more to be read, push that handle to#handlers, and on subsequent reads, make sure to fully read that handler.Reacted by Mert Can Altin and KunalYes, the changes I added does not actually respect the
bufferSizeoption, but it at least will return the full contents of a directory. The change I'm requesting here is that we figure out how to properly supportbufferSizeoption.My loose idea for a solution would be to add a new queue to the
Dirclass, something like#handlers, and as things are read, if its in recursive mode, and the current item is a directory, create a handle for that directory, do the read operation (while respectingbufferSize), and if there is more to be read, push that handle to#handlers, and on subsequent reads, make sure to fully read that handler.Now I understood the issue clearly
thanks @Ethan-Arrowood for the explanation.
i have started working on this issue@KunalKumar-1 cool but i was working on this!
Reacted by KunalI will be doping this issue, as I was unable to coming with any good solution for this, you can see the draft PR, if you want to know my approach! Ya! that will be it!
I would like to take up this issue
Reacted by Ethan Arrowood and Mert Can Altin@Ethan-Arrowood, it’s been two weeks since I opened this PR #55896 When you have some time, could you please take a look?
Reacted by Ethan Arrowood and Caolan Leatham-OrrellHey, I would like to pick this up if not done. Let me know.
- added a commit that references this issue
on Apr 26, 2025 - added 2 commits that reference this issue
on May 6, 2025 - added a commit that references this issue
on May 14, 2025 - added 6 commits that reference this issue
on May 16, 2025 Closed by #55896
Related to: #48820 and #55744
After the
recursiveoption was added toreaddirandopendir, it was noted that when specifyingbufferSizealongsiderecursive: true, the result ofopendirwas incorrect. This is fixed in #55744 . However, the fix is a naive solution, and doesn't properly respect thebufferSizeoption. Furthermore, it could result in a blocked event loop. This should be fixed.I recommend reading the discussion in #48820 for more information. This should only involve changes to the
Dirclass inlib/internal/fs/dir.js.