java.util.concurrent.RejectedExecutionException: null

Jenkins JIRA | Jesse Glick | 2 years ago
tip
Do you know that we can give you better hits? Get more relevant results from Samebug’s stack trace search.
  1. 0

    Oftentimes tests fail with {code:none} java.util.concurrent.RejectedExecutionException: null at hudson.remoting.SingleLaneExecutorService.execute(SingleLaneExecutorService.java:99) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:132) at com.google.common.util.concurrent.ForwardingExecutorService.submit(ForwardingExecutorService.java:105) at jenkins.util.InterceptingExecutorService.submit(InterceptingExecutorService.java:39) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.scheduleRun(CpsThreadGroup.java:172) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.waitForSuspension(CpsFlowExecution.java:524) at org.jenkinsci.plugins.workflow.SingleJobTestBase.waitForWorkflowToSuspend(SingleJobTestBase.java:108) at org.jenkinsci.plugins.workflow.SingleJobTestBase.waitForWorkflowToComplete(SingleJobTestBase.java:95) at org.jenkinsci.plugins.workflow.steps.input.InputStepRestartTest$2.evaluate(InputStepRestartTest.java:63) {code} The usual meaning of "shutdown" here, that Jenkins is shutting down, does not seem to apply, since we are in the middle of a story. I suspect that {{CpsThreadGroup.scheduleRun}} is to blame. It calls {{runner.shutdown()}} sometimes. It _does_ catch {{RejectedExecutionException}} (from {{cc4eca7}}), but in the nested call to {{submit}} which was observed to throw this exception earlier, not the one that is throwing the exception here. The call to {{shutdown}} dates to {{42dbfb1}} in the {{single-thread}} branch, which says only bq. shutdown the executor pool when CpsThreadGroup is done Is this still necessary and appropriate after {{289c9b0}} (collection of {{CpsThread}})? It is possible the flaw is in {{CpsFlowExecution.waitForSuspension}}, as a TODO comment there suggests. Can there be a race condition whereby {{programPromise}} is momentarily not null, but then the flow ends immediately afterwards? For that matter, is the comment bq. the execution has already finished even correct, given that there appears to be no code which would set {{programPromise}} back to null? If I am right, then this comment is misleading, quietly returning when it is null is possibly wrong, and {{g.scheduleRun().get()}} ought to be returning without throwing an exception if the flow is already shut down.

    Jenkins JIRA | 2 years ago | Jesse Glick
    java.util.concurrent.RejectedExecutionException: null
  2. 0

    Oftentimes tests fail with {code:none} java.util.concurrent.RejectedExecutionException: null at hudson.remoting.SingleLaneExecutorService.execute(SingleLaneExecutorService.java:99) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:132) at com.google.common.util.concurrent.ForwardingExecutorService.submit(ForwardingExecutorService.java:105) at jenkins.util.InterceptingExecutorService.submit(InterceptingExecutorService.java:39) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.scheduleRun(CpsThreadGroup.java:172) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.waitForSuspension(CpsFlowExecution.java:524) at org.jenkinsci.plugins.workflow.SingleJobTestBase.waitForWorkflowToSuspend(SingleJobTestBase.java:108) at org.jenkinsci.plugins.workflow.SingleJobTestBase.waitForWorkflowToComplete(SingleJobTestBase.java:95) at org.jenkinsci.plugins.workflow.steps.input.InputStepRestartTest$2.evaluate(InputStepRestartTest.java:63) {code} The usual meaning of "shutdown" here, that Jenkins is shutting down, does not seem to apply, since we are in the middle of a story. I suspect that {{CpsThreadGroup.scheduleRun}} is to blame. It calls {{runner.shutdown()}} sometimes. It _does_ catch {{RejectedExecutionException}} (from {{cc4eca7}}), but in the nested call to {{submit}} which was observed to throw this exception earlier, not the one that is throwing the exception here. The call to {{shutdown}} dates to {{42dbfb1}} in the {{single-thread}} branch, which says only bq. shutdown the executor pool when CpsThreadGroup is done Is this still necessary and appropriate after {{289c9b0}} (collection of {{CpsThread}})? It is possible the flaw is in {{CpsFlowExecution.waitForSuspension}}, as a TODO comment there suggests. Can there be a race condition whereby {{programPromise}} is momentarily not null, but then the flow ends immediately afterwards? For that matter, is the comment bq. the execution has already finished even correct, given that there appears to be no code which would set {{programPromise}} back to null? If I am right, then this comment is misleading, quietly returning when it is null is possibly wrong, and {{g.scheduleRun().get()}} ought to be returning without throwing an exception if the flow is already shut down.

    Jenkins JIRA | 2 years ago | Jesse Glick
    java.util.concurrent.RejectedExecutionException: null

    Root Cause Analysis

    1. java.util.concurrent.RejectedExecutionException

      null

      at hudson.remoting.SingleLaneExecutorService.execute()
    2. Hudson :: Remoting Layer
      SingleLaneExecutorService.execute
      1. hudson.remoting.SingleLaneExecutorService.execute(SingleLaneExecutorService.java:99)
      1 frame
    3. Java RT
      AbstractExecutorService.submit
      1. java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:132)
      1 frame
    4. Guava
      ForwardingExecutorService.submit
      1. com.google.common.util.concurrent.ForwardingExecutorService.submit(ForwardingExecutorService.java:105)
      1 frame
    5. jenkins.util
      InterceptingExecutorService.submit
      1. jenkins.util.InterceptingExecutorService.submit(InterceptingExecutorService.java:39)
      1 frame
    6. org.jenkinsci.plugins
      InputStepRestartTest$2.evaluate
      1. org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.scheduleRun(CpsThreadGroup.java:172)
      2. org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.waitForSuspension(CpsFlowExecution.java:524)
      3. org.jenkinsci.plugins.workflow.SingleJobTestBase.waitForWorkflowToSuspend(SingleJobTestBase.java:108)
      4. org.jenkinsci.plugins.workflow.SingleJobTestBase.waitForWorkflowToComplete(SingleJobTestBase.java:95)
      5. org.jenkinsci.plugins.workflow.steps.input.InputStepRestartTest$2.evaluate(InputStepRestartTest.java:63)
      5 frames