Skip to content
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

feat(db): append errors #7843

Merged
merged 1 commit into from
Oct 31, 2024
Merged

feat(db): append errors #7843

merged 1 commit into from
Oct 31, 2024

Conversation

knqyf263
Copy link
Collaborator

Description

We should show the rate limit detail in the fatal error. Some users don't read log messages, and --quiet shows only a fatal log.

Before

$ trivy image debian:12 --quiet
2024-10-31T14:09:06+04:00       FATAL   Fatal error     init error: DB error: failed to download vulnerability DB: OCI artifact error: failed to download vulnerability DB: failed to download artifact from any source

After

$ trivy image debian:12 --quiet
2024-10-31T14:08:14+04:00       FATAL   Fatal error     init error: DB error: failed to download vulnerability DB: OCI artifact error: failed to download vulnerability DB: failed to download artifact from any source: 1 error occurred:
        * oci download error: failed to fetch the layer: GET https://ghcr.io/v2/aquasecurity/trivy-db/blobs/sha256:ba0d01953a8c28331552412292b72f3639b3962fe27f3359a51553a52d3f7b29: TOOMANYREQUESTS: retry-after: 947.147µs, allowed: 44000/minute

Related discussions

Checklist

  • I've read the guidelines for contributing to this repository.
  • I've followed the conventions in the PR title.
  • I've added tests that prove my fix is effective or that my feature works.
  • I've updated the documentation with the relevant information (if needed).
  • I've added usage information (if the PR introduces new options)
  • I've included a "before" and "after" example to the description (if the PR is a user interface change).

Signed-off-by: knqyf263 <[email protected]>
@knqyf263 knqyf263 self-assigned this Oct 31, 2024
@knqyf263 knqyf263 marked this pull request as ready for review October 31, 2024 10:11
@nikpivkin
Copy link
Contributor

BTW, errors can be joined together using the built-in function https://pkg.go.dev/errors@master#Join

Copy link
Contributor

@DmitriyLewen DmitriyLewen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@knqyf263
Copy link
Collaborator Author

BTW, errors can be joined together using the built-in function https://pkg.go.dev/errors@master#Join

Yes, I prefer stdlib, and tried it in several places. However, the formatted output is very unclear.
https://go.dev/play/p/AYls8a96t-j

Since this rate limit error is really important now, I'd go for go-multierror. We can probably add a new error package wrapping errors.Join to eliminate the go-multierror dependency, but i didn't have a chance to do that.

@knqyf263
Copy link
Collaborator Author

knqyf263 commented Oct 31, 2024

joinError is not exported. I have no idea how we can customize the output format.
https://github.com/golang/go/blob/6d39245514c675cdea5c7fd7f778e97bf0728dd5/src/errors/join.go#L40

We can define our joinError, but it's re-implementation of errors.Join.

@knqyf263 knqyf263 added this pull request to the merge queue Oct 31, 2024
Merged via the queue into aquasecurity:main with commit 5e78b6c Oct 31, 2024
12 checks passed
@knqyf263 knqyf263 deleted the db_multi_errs branch October 31, 2024 10:59
@knqyf263 knqyf263 mentioned this pull request Oct 31, 2024
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants