-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Don’t try reading from pipes or special file descriptors #19421
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
These can cause `fs.readFile()` to hang waiting for the file descriptor to be closed.
WalkthroughAdds a pre-check in the build utility to detect special file types (character devices or FIFOs) using fs.stat. If the target is a special file, the code skips reading existing contents to avoid hanging and proceeds to ensure the parent directory exists and write the file. For non-special files, the previous behavior remains: read current contents, skip writes when identical, then ensure directories and write. The public function signature is unchanged; changes are internal control flow and comments. Pre-merge checks✅ Passed checks (4 passed)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/@tailwindcss-cli/src/commands/build/utils.ts(1 hunks)
🔇 Additional comments (2)
packages/@tailwindcss-cli/src/commands/build/utils.ts (2)
16-17: Clear documentation of the fix.The comment effectively explains why special files require different handling and prevents future regressions.
22-33: Conditional logic and write operations are correct.The control flow properly skips reading for special files while preserving the optimization that avoids unnecessary writes for regular files when content is unchanged. Directory creation and file writing remain robust.
Note: This assessment assumes the critical issue with stat error handling (lines 18-21) is addressed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
CHANGELOG.md (1)
27-27: Clarify scope to match the actual fix (pipes/char devices too).The change handles more than just
/dev/stdout. Consider wording it to reflect special files so users know FIFOs/char devices are covered.- - CLI: Don't hang when output is `/dev/stdout` ([#19421](https://github.com/tailwindlabs/tailwindcss/pull/19421)) + - CLI: Avoid hangs when output is `/dev/stdout` or another special file (FIFO/char device) ([#19421](https://github.com/tailwindlabs/tailwindcss/pull/19421))
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
CHANGELOG.md(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Linux / cli
- GitHub Check: Linux / upgrade
- GitHub Check: Linux
Fixes #19420