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-72509] show error message in progressive logs on 4xx status codes #8907

Merged
merged 3 commits into from Feb 1, 2024

Conversation

mawinter69
Copy link
Contributor

@mawinter69 mawinter69 commented Jan 28, 2024

when accessing the log of a running build and the job gets deleted or someone removes read permissions (without discover) the log just appends the output of the call to logText/progressiveHtml which is the 404 message from Jenkins.
The same happens when one accesses the log of an agent and the agent is deleted.
This is due to only checking for 403 status and ignoring other status codes from the 4xx range.
With this change all 4xx http status code will lead to a reload and then showing a proper 404 page in mentioned cases

See JENKINS-72509.

Testing done

Agents:

  • create an agent and connect it
  • visit the log page of the agent
  • in another window delete the agent
    -> the page shows an error message instead of adding the 404 to the logoutput

Jobs:

  • Create a job, that sleeps for a few minutes

  • start the job and look at the console output (dito for consolFull)

  • In a separate window delete the job
    -> the page shows an error message instead of adding the 404 to the logoutput

  • Create a job, that sleeps for a few minutes

  • start the job

  • As a different user that has job read permissions open the job log (use another browser)

  • as admin user remove read permissions for that other
    -> the page shows an error message instead of adding the 404 to the logoutput

Proposed changelog entries

  • JENKINS-72509, show error message in progressive logs on 4xx status codes

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

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

@mawinter69 mawinter69 changed the title [JENKINS-72509] avoid broken log when deleting job/agent [JENKINS-72509] reload progressive logs on all 4xx status codes Jan 28, 2024
when accessing the log of a running build and the job gets deleted or
someone removes read permissions (without discover) the log just appends
the output of the call to logText/progressiveHtml which is the 404
message from Jenkins.
The same happens when one accesses the log of an agent and the agent is
deleted.
This is due to only checking for 403 status and ignoring other status
codes from the 400 range.
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 web-ui The PR includes WebUI changes which may need special expertise bug For changelog: Minor bug. Will be listed after features labels Jan 29, 2024
@NotMyFault NotMyFault requested a review from a team January 29, 2024 18:47
@@ -38,8 +38,8 @@ Behaviour.specify(
}, 1000);
return;
}
if (rsp.status === 403) {
// likely an expired crumb
if (rsp.status >= 400) {
Copy link
Member

Choose a reason for hiding this comment

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

should this reload on server errors? it might get in a reload loop?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

server errors are already catched in the previous if (line 35)

@daniel-beck
Copy link
Member

Is the diagnosis of short-lived logs a relevant use case we should continue to support, e.g., cloud agent connection logs? If so, a forced reload when it goes away makes for a worse experience. Not saying no to this, but this seems to have notable downsides compared to e.g. showing a message summarizing the error (rather than inlining the entire page, see e.g. how form validation currently does it) and offering to reload.

@yaroslavafenkin yaroslavafenkin added the security-approved @jenkinsci/core-security-review reviewed this PR for security issues label Jan 30, 2024
@mawinter69
Copy link
Contributor Author

Is the diagnosis of short-lived logs a relevant use case we should continue to support, e.g., cloud agent connection logs? If so, a forced reload when it goes away makes for a worse experience. Not saying no to this, but this seems to have notable downsides compared to e.g. showing a message summarizing the error (rather than inlining the entire page, see e.g. how form validation currently does it) and offering to reload.

Valid point. Changed it to print an error instead of reloading for return codes other than 403
image

@mawinter69 mawinter69 changed the title [JENKINS-72509] reload progressive logs on all 4xx status codes [JENKINS-72509] show error message in progressive logs on 4xx status codes Jan 30, 2024
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!

@timja
Copy link
Member

timja commented Jan 31, 2024

/label ready-for-merge


This PR is now ready for merge, after ~24 hours, we will merge it if there's no negative feedback.

Thanks!

@comment-ops-bot comment-ops-bot bot 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 31, 2024
@NotMyFault NotMyFault merged commit d7be82a 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 security-approved @jenkinsci/core-security-review reviewed this PR for security issues web-ui The PR includes WebUI changes which may need special expertise
Projects
None yet
5 participants