Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-57866

ShellStepTest.abort flake on Windows

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      On CI I see a lot of flakes on Windows:

      java.lang.AssertionError: org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest$1@52070d1b
      	at org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest.ensureForWhile(ShellStepTest.java:682)
      	at org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest.abort(ShellStepTest.java:192)
      

      The test is not written terribly well, but basically this means that the batch script running ping every second in a loop was sent a termination signal yet continued running for at least five seconds after the interrupt. Did the signal get lost? Sent to the wrong subprocess without breaking the loop? Was it going to get handled but the system was just too heavily loaded? Could probably improve test to:

      • Use a single process for the batch script, like ping -n 99999 127.0.0.1 >tmp.
      • Wait indefinitely (up to global test timeout) for the file to not have been touched in the last few seconds.

        Attachments

          Activity

          jglick Jesse Glick created issue -
          jglick Jesse Glick made changes -
          Field Original Value New Value
          Description On CI I see a lot of flakes on Windows:

          {code:none}
          java.lang.AssertionError: org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest$1@52070d1b
          ... at org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest.ensureForWhile(ShellStepTest.java:682)
          ... at org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest.abort(ShellStepTest.java:192)
          {code}

          The test is not written terribly well, but basically this means that the batch script running {{ping}} every second in a loop was sent a termination signal yet continued running for at least five seconds after the interrupt. Did the signal get lost? Sent to the wrong subprocess without breaking the loop? Was it going to get handled but the system was just too heavily loaded? Could probably improve test to:

          * Use a single process for the batch script, like {{ping -n 99999 127.0.0.1 >tmp}}.
          * Wait indefinitely (up to global test timeout) for the file to _not_ have been touched in the last few seconds.
          On CI I see a lot of flakes on Windows:

          {code:none}
          java.lang.AssertionError: org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest$1@52070d1b
          at org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest.ensureForWhile(ShellStepTest.java:682)
          at org.jenkinsci.plugins.workflow.steps.durable_task.ShellStepTest.abort(ShellStepTest.java:192)
          {code}

          The test is not written terribly well, but basically this means that the batch script running {{ping}} every second in a loop was sent a termination signal yet continued running for at least five seconds after the interrupt. Did the signal get lost? Sent to the wrong subprocess without breaking the loop? Was it going to get handled but the system was just too heavily loaded? Could probably improve test to:

          * Use a single process for the batch script, like {{ping -n 99999 127.0.0.1 >tmp}}.
          * Wait indefinitely (up to global test timeout) for the file to _not_ have been touched in the last few seconds.

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated: