-
Notifications
You must be signed in to change notification settings - Fork 534
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
fix: add timeout handling to legacy cli #4950
Conversation
16b8657
to
9067b9e
Compare
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.
Using a context is a huge improvement here and this is a great catch!
Strongly suggest that CLI.PrepareV1Command
use exec.CommandContext -- then the context timeout will automatically tear down the node subprocess.
If you do this, it should not be necessary to explicitly check the ctx.Err
after running node; this will be handled for you by the os/exec.Cmd
, see https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/os/exec/exec.go;l=665
Aside from that, I would strongly recommend checking errors in tests. Discarding them for unconditional stderr printing is OK.
Co-authored-by: Casey Marshall <cmars@users.noreply.github.com>
Co-authored-by: Casey Marshall <cmars@users.noreply.github.com>
Hm. I don't understand what's the difference to the current implementation. PrepareV1Command is already using CommandContext, so what is the suggested change? |
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.
LGTM
I missed that change in this branch, sorry! |
61126f6
to
266e899
Compare
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.
LGTM, agreeing with Casey's comment about https://github.com/snyk/cli/pull/4950/files#r1407783863 though. I usually set Golang to ignore that specific error as I don't agree with it 🤣
Pull Request Submission
Please check the boxes once done.
The pull request must:
feat:
orfix:
, others might be used in rare occasions as well, if there is no need to document the changes in the release notes. The changes or fixes should be described in detail in the commit message for the changelog & release notes.Pull Request Review
All pull requests must undergo a thorough review process before being merged.
The review process of the code PR should include code review, testing, and any necessary feedback or revisions.
Pull request reviews of functionality developed in other teams only review the given documentation and test reports.
Manual testing will not be performed by the reviewing team, and is the responsibility of the author of the PR.
For Node projects: It’s important to make sure changes in
package.json
are also affectingpackage-lock.json
correctly.If a dependency is not necessary, don’t add it.
When adding a new package as a dependency, make sure that the change is absolutely necessary. We would like to refrain from adding new dependencies when possible.
Documentation PRs in gitbook are reviewed by Snyk's content team. They will also advise on the best phrasing and structuring if needed.
Pull Request Approval
Once a pull request has been reviewed and all necessary revisions have been made, it is approved for merging into
the main codebase. The merging of the code PR is performed by the code owners, the merging of the documentation PR
by our content writers.
What does this PR do?
This PR starts commands in the TypeScript CLI with a deadline, so that timeouts are actually killing spawned sub processes.
Also, the global timeout now waits for a grace-period of 5s on top of the timeout to exit.
Screen.Recording.2023-11-28.at.08.11.46.mov
Where should the reviewer start?
cliv2/internal/cliv2/cliv2.go
cliv2/cmd/cliv2/main.go
How should this be manually tested?
make build
SNYK_CI=1 SNYK_TIMEOUT_SECS=1 binary-releases/snyk-macos test --all-projects
should exit with exitCode 69 and "command timed out" messageAutomatic tests
cli/cliv2/cmd/cliv2/main_test.go
Line 217 in 9067b9e
cli/cliv2/internal/cliv2/cliv2_test.go
Line 467 in 9067b9e
Any background context you want to provide?
What are the relevant tickets?
Screenshots
Additional questions