-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
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-53958] allow pipeline jobs to run when built-in is offline #9203
Conversation
When a pipeline starts building it creates an OneOffExecutor that takes care of the pipeline execution on the built-in node. The executor has some logic to prevent running things when an agent has gone offline in the timeframe between assiging the task to the executor and the executor actually starting running the task. But this logic falsely leads to a termination of the executor for the pipeline job and the attempts to restart the task fails as the task is no longer in the queue. Thas change tries to avoid this by ignoring the online state for the built-in node as it will never be really offline (there is no channel that can be closed). One can take it temporarily offline but this should not prevent pipelines that do not explicitly make use of the built-in to start running.
In general, I like the idea, but in the past the current behavior also helped us when the controller disk space ran out and the built-in node was taken offline automatically. We do not run jobs on the built-in node, but since it is needed for starting jobs, it prevented further jobs to run. |
I think that when a node is offline it should only affect explicit usage of the node i.e. because it is matched by a label expression in a node step or due to a job restriction. |
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.
/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!
This comment was marked as off-topic.
This comment was marked as off-topic.
I just updated to a version of Jenkins that now has this behavior. Ughh. Is there a config option to revert this? |
As far as I know there is not a configuration option to revert this change. Can you provide a detailed description of the problem you are seeing as a result of this change so that it can be evaluated? The Jenkins issue tracker is the best place to provide that detailed description |
@MarkEWaite |
This is not the place to have that discussion. Please file an issue in Jira or open a topic in the forum. |
my apologies, I made issue https://issues.jenkins.io/browse/JENKINS-73866 |
When a pipeline starts building it creates an OneOffExecutor that takes care of the pipeline execution on the built-in node. The executor has some logic to prevent running things when an agent has gone offline in the timeframe between assigning the task to the executor and the executor actually starting running the task. But this logic falsely leads to a termination of the executor for the pipeline job and the attempts to restart the task fails as the task is no longer in the queue.
This change tries to avoid this by ignoring the online state for the built-in node as it will never be really offline (there is no channel that can be closed). One can take it temporarily offline but this should not prevent pipelines that do not explicitly make use of the built-in to start running.
See JENKINS-53958.
Testing done
Manual testing:
Scenario 1: pipeline not using
built-in
built-in
node offlineScenario 2: pipeline explicitly using
built-in
built-in
node offlinebuilt-in
built-in
nodeProposed changelog entries
Proposed upgrade guidelines
N/A
Submitter checklist
Desired reviewers
@mention
Before the changes are marked as
ready-for-merge
:Maintainer checklist