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

[JENKINS-71700] avoid stacktrace from artifactarchiver when no artifacts are found #8908

Merged
merged 1 commit into from
Feb 1, 2024

Conversation

mawinter69
Copy link
Contributor

@mawinter69 mawinter69 commented Jan 28, 2024

When the validateAntFileMask fails because there are too many files or it takes too long an exception is thrown that was intended to be catched in the ArtifactArchiver. The fix in #6475 only considered builds running on the controller, but when the build happens on an agent, this didn't work as the exception is deeply wrapped in 2 other exceptions.
As printing the exception message is of no real help, just catch all exceptions and print them to the jenkins log but not the build log. Any other message might just be misleading as one could get the impression that jenkins stopped after looking at 10000 files and only because of this no files where archived but this is not the case. At this place the ArtifactArchiver is just trying to give a hint why it didn't archive anything.

See JENKINS-71700.

Testing done

Added unit test.

Manual testing

  • open script console and run hudson.FilePath.VALIDATE_ANT_FILE_MASK_BOUND=1
  • create freestyle job that writes 2 files to the workspace and add an archiveArtifact post build step that will not match any of the files

Before
Case 1: job runs on controller:
This creates the following output:

18:04:20 Archiving artifacts
18:04:21 no matches found within 1
18:04:21 ERROR: Step ‘Archive the artifacts’ failed: No artifacts found that match the file pattern "dist/libs/**/*.tgz". Configuration error?

Case 2: job runs on an agent
This prints a stacktrace to the build log

18:05:09 Archiving artifacts
18:05:09 hudson.FilePath$ValidateAntFileMask$1Cancel
18:05:09 	at hudson.FilePath$ValidateAntFileMask$1.isCaseSensitive(FilePath.java:3338)
...
18:05:09 Caused: java.lang.InterruptedException: hudson.FilePath$FileMaskNoMatchesFoundException: no matches found within 1
18:05:09 	at hudson.FilePath.act(FilePath.java:1232)
...
18:05:09 ERROR: Step ‘Archive the artifacts’ failed: No artifacts found that match the file pattern "dist/libs/**/*.tgz". Configuration error?

After:
In both cases there is only the following

18:17:31 Archiving artifacts
18:17:31 ERROR: Step ‘Archive the artifacts’ failed: No artifacts found that match the file pattern "dist/libs/**/*.tgz". Configuration error?

A warning is logged with FINE level.

Proposed changelog entries

  • JENKINS-71700, avoid stacktrace from artifactarchiver when no artifacts are found

Proposed upgrade guidelines

N/A

Submitter checklist

Edit tasklist title
Beta Give feedback Tasklist Submitter checklist, more options

Delete tasklist

Delete tasklist block?
Are you sure? All relationships in this tasklist will be removed.
  1. The Jira issue, if it exists, is well-described.
    Options
  2. The changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developers, depending on the change) and are in the imperative mood (see examples). Fill in the Proposed upgrade guidelines section only if there are breaking changes or changes that may require extra steps from users during upgrade.
    Options
  3. There is automated testing or an explanation as to why this change has no tests.
    Options
  4. New public classes, fields, and methods are annotated with @Restricted or have @since TODO Javadocs, as appropriate.
    Options
  5. New deprecations are annotated with @Deprecated(since = "TODO") or @Deprecated(forRemoval = true, since = "TODO"), if applicable.
    Options
  6. New or substantially changed JavaScript is not defined inline and does not call eval to ease future introduction of Content Security Policy (CSP) directives (see documentation).
    Options
  7. For dependency updates, there are links to external changelogs and, if possible, full differentials.
    Options
  8. For new APIs and extension points, there is a link to at least one consumer.
    Options
Loading

Desired reviewers

@mention

Before the changes are marked as ready-for-merge:

Maintainer checklist

Edit tasklist title
Beta Give feedback Tasklist Maintainer checklist, more options

Delete tasklist

Delete tasklist block?
Are you sure? All relationships in this tasklist will be removed.
  1. There are at least two (2) approvals for the pull request and no outstanding requests for change.
    Options
  2. Conversations in the pull request are over, or it is explicit that a reviewer is not blocking the change.
    Options
  3. Changelog entries in the pull request title and/or Proposed changelog entries are accurate, human-readable, and in the imperative mood.
    Options
  4. Proper changelog labels are set so that the changelog can be generated automatically.
    Options
  5. If the change needs additional upgrade steps from users, the upgrade-guide-needed label is set and there is a Proposed upgrade guidelines section in the pull request title (see example).
    Options
  6. If it would make sense to backport the change to LTS, a Jira issue must exist, be a Bug or Improvement, and be labeled as lts-candidate to be considered (see query).
    Options
Loading

When the validateAntFileMask fails because there are too many files or
it takes too long an exception is thrown that was intendend to be
catched in the ArtifactArchiver. But when the build happens on an agent
and not the built-in, this didn't work as the the exception is deeply
wrapped in 2 other exceptions.
As printing this information is of no real help, just catch all
exceptions and print them to the jenkins log but not the build log. Any
other message might just be misleading as one could get the impression
that jenkins stopped after looking at 10000 files and only because of
this no files where archived but this is not the case. At this place the
ArtifactArchiver is just trying to give a hint why it didn't archive
anything.
@mawinter69 mawinter69 marked this pull request as ready for review January 28, 2024 17:55
Copy link
Member

@NotMyFault NotMyFault left a comment

Choose a reason for hiding this comment

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

Thanks!

@NotMyFault NotMyFault added the bug For changelog: Minor bug. Will be listed after features label Jan 29, 2024
@NotMyFault NotMyFault requested a review from a team January 29, 2024 17:41
@NotMyFault NotMyFault added the ready-for-merge The PR is ready to go, and it will be merged soon if there is no negative feedback label Jan 30, 2024
@NotMyFault NotMyFault merged commit ef378cc into jenkinsci:master Feb 1, 2024
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug For changelog: Minor bug. Will be listed after features ready-for-merge The PR is ready to go, and it will be merged soon if there is no negative feedback
Projects
None yet
3 participants