Currently WorkflowRun.waitForCompletion spins on a thread just so it can hold a (flyweight) Executor open. Similarly, ExecutorStepExecution.PlaceholderTask spins just to hold a (heavyweight) Executor open. These are wasteful. There should be an optional Task or Executable interface that can run asynchronously, without literally consuming a native Thread for each one.
- depends on
-
JENKINS-34450 Deadlock between Executor and AsynchronousExecution
-
- Open
-
- is blocking
-
JENKINS-28182 Revisit use of $JENKINS_SERVER_COOKIE and Launcher.kill
-
- Resolved
-
- is duplicated by
-
JENKINS-26098 Asynch Queue.Executable
-
- Resolved
-
- is related to
-
JENKINS-22941 Way to mark an Executable that should not block isReadyToRestart
-
- Resolved
-
-
JENKINS-26900 Hide flyweight master executor when ≥1 heavyweight executors running as subtasks
-
- Resolved
-
- links to
Code changed in jenkins
User: Jesse Glick
Path:
core/src/main/java/hudson/model/AbstractBuild.java
core/src/main/java/hudson/model/Computer.java
core/src/main/java/hudson/model/Executor.java
core/src/main/java/hudson/model/OneOffExecutor.java
core/src/main/java/hudson/model/Queue.java
core/src/main/java/hudson/model/ResourceController.java
core/src/main/java/hudson/model/queue/WorkUnitContext.java
core/src/main/java/jenkins/model/queue/Executable2.java
http://jenkins-ci.org/commit/jenkins/46a900f4cb468853c5dca844d258b5b862c3a8bf
Log:
JENKINS-25938Introduced AsynchronousExecutable.