Job continues to run on timeout when process exits with code 0

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      When a sh step, wrapped into a timeout step exits with code 0 when it receives a SIGTERM or SIGINTER signal, the job will continue to run and not abort.

       

      I expected that when the timeout expires, the job terminates, independent from the exit code of the process that was terminated by the timeout.
      This breaks the timeout functionality for processes that behaves badly (exit with wrong signal) or ignore the signal but terminate soon afterwards.

       

      How to reproduce:

      pipeline {
        agent any  stages {
         stage("Test") {
             steps {
             timeout(time: 3, unit: 'SECONDS') {
               script {
                 def rc = sh(
                 script: '''#!/bin/bash
                 
                 trap 'exit 0' INT TERM
                 
                 while true; do
                     echo "Sleeping..."
                     sleep 1
                 done
                 ''')
               }
             }
             echo "echo after TIMEOUT, job still running"
           }
          }
        }
      }
      

            Assignee:
            Unassigned
            Reporter:
            Fabian Holler
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: