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

durable-task 1.8 breaks workflow bat steps

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Blocker
    • Resolution: Duplicate
    • Component/s: durable-task-plugin
    • Labels:
    • Environment:
      Jenkins ver. 1.652 (war)
      durable-taks 1.8
      windows 7 64 bit
      python 3.5 64 bit
      Oracle JRE v8 update 73
    • Similar Issues:

      Description

      After updating durable-task from 1.7 to 1.8 workflow builds execute bat steps and hang.
      Example of workflow script:
      node

      { bat 'python TaskFor1C.py' echo 'end' }

      In TaskFor1C.py start program (1cv8.exe) with parametr using metod subprocess.call(). Program start and working as expected but after close workflow hang and in log little spinning icon, but need 'end'.
      After switching back to durable-task version 1.7 everything is working again as expected.

        Attachments

          Issue Links

            Activity

            vakulenko_alex Aleksei Vakulenko created issue -
            Hide
            jglick Jesse Glick added a comment -

            Given JENKINS-32000 I wonder if I should just have some global configuration pulldown for Windows users letting them select an arbitrary version of the code after trial and error.

            What version of Windows do you run? Do you have a way of reproducing from scratch? Are you able to ascertain whether the control directory is created, and if so, whether the correct output is sent to it?

            Show
            jglick Jesse Glick added a comment - Given JENKINS-32000 I wonder if I should just have some global configuration pulldown for Windows users letting them select an arbitrary version of the code after trial and error. What version of Windows do you run? Do you have a way of reproducing from scratch? Are you able to ascertain whether the control directory is created, and if so, whether the correct output is sent to it?
            jglick Jesse Glick made changes -
            Field Original Value New Value
            Link This issue depends on JENKINS-32000 [ JENKINS-32000 ]
            Hide
            vakulenko_alex Aleksei Vakulenko added a comment - - edited

            I think problem not only this plugin, but in some plugin of Pipeline v 1.15.
            Version of Windows - 7 64 bit SP1.
            In example program 1c.exe replaced 7z.exe

            simple script on python:

            # coding: utf8
            import subprocess
            import os
            import time
            
            def main():
            	call_string = 'C:\\Program Files\\7-Zip\\7z.exe t ' + os.getcwd() + '\\Empty.7z'
            	print(call_string)
            	subprocess.call(call_string)
            	time.sleep(10)
            	
            if __name__ == '__main__':
            	main()
            

            workflow script for test:

            node{
                wrap([$class: 'TimestamperBuildWrapper']) {
            		stash includes: 'Python.py, Empty.7z', name: 'zip'
            		timeout(10) {
            			bat 'python python.py'
            		}
            	}
            }
            
            parallel Branch1: {
            		node {
            			wrap([$class: 'TimestamperBuildWrapper']) {
            			    unstash 'zip'
            			    timeout(10) {
            					bat 'python python.py'
            				}
            			}
            		}
            	},Branch2: {
            		node {
            			wrap([$class: 'TimestamperBuildWrapper']) {
            			    unstash 'zip'
            				timeout(10) {
            					bat 'python python.py'
            				}
            			}
            		}
            	}
            	failFast: false
            

            workflow log:

            [Pipeline] Allocate node : Start
            Running on мастер in C:\Jenkins\workspace\UT_Develop
            [Pipeline] node {
            [Pipeline] General Build Wrapper : Start
            [Pipeline] wrap {
            [Pipeline] stash
            19:31:21 Stashed 1 file(s)
            [Pipeline] Enforce time limit : Start
            [Pipeline] timeout {
            [Pipeline] bat
            19:31:21 [UT_Develop] Running batch script
            19:31:21 
            19:31:21 C:\Jenkins\workspace\UT_Develop>python python.py 
            19:31:21 
            19:31:21 7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
            19:31:21 
            19:31:21 
            19:31:21 Error:
            19:31:21 cannot find archive
            19:32:28 C:\Program Files\7-Zip\7z.exe t C:\Jenkins\workspace\UT_Develop\Empty.7z
            [Pipeline] } //timeout
            [Pipeline] Enforce time limit : End
            [Pipeline] } //wrap
            [Pipeline] General Build Wrapper : End
            [Pipeline] } //node
            [Pipeline] Allocate node : End
            [Pipeline] Execute in parallel : Start
            [Pipeline] [Branch1] parallel { (Branch: Branch1)
            [Pipeline] [Branch2] parallel { (Branch: Branch2)
            [Pipeline] [Branch1] Allocate node : Start
            [Branch1] Running on мастер in C:\Jenkins\workspace\UT_Develop
            [Pipeline] [Branch2] Allocate node : Start
            [Branch2] Running on мастер in C:\Jenkins\workspace\UT_Develop@2
            [Pipeline] [Branch1] node {
            [Pipeline] [Branch2] node {
            [Pipeline] [Branch1] General Build Wrapper : Start
            [Pipeline] [Branch1] wrap {
            [Pipeline] [Branch2] General Build Wrapper : Start
            [Pipeline] [Branch2] wrap {
            [Pipeline] [Branch1] unstash
            [Pipeline] [Branch2] unstash
            [Pipeline] [Branch1] Enforce time limit : Start
            [Pipeline] [Branch1] timeout {
            [Pipeline] [Branch2] Enforce time limit : Start
            [Pipeline] [Branch2] timeout {
            [Pipeline] [Branch1] bat
            19:32:29 [Branch1] [UT_Develop] Running batch script
            [Pipeline] [Branch2] bat
            19:32:29 [Branch1] 
            19:32:29 [Branch1] C:\Jenkins\workspace\UT_Develop>python python.py 
            19:32:29 [Branch1] 
            19:32:29 [Branch1] 7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
            19:32:29 [Branch1] 
            19:32:29 [Branch1] 
            19:32:29 [Branch1] Error:
            19:32:29 [Branch1] cannot find archive
            19:32:29 [Branch2] [UT_Develop@2] Running batch script
            19:32:29 [Branch2] 
            19:32:29 [Branch2] C:\Jenkins\workspace\UT_Develop@2>python python.py 
            19:32:29 [Branch2] 
            19:32:29 [Branch2] 7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
            19:32:29 [Branch2] 
            19:32:29 [Branch2] 
            19:32:29 [Branch2] Error:
            19:32:29 [Branch2] cannot find archive
            19:33:37 [Branch1] C:\Program Files\7-Zip\7z.exe t C:\Jenkins\workspace\UT_Develop\Empty.7z
            19:33:37 [Branch2] C:\Program Files\7-Zip\7z.exe t C:\Jenkins\workspace\UT_Develop@2\Empty.7z
            [Pipeline] } //timeout
            [Pipeline] Enforce time limit : End
            [Pipeline] } //wrap
            [Pipeline] General Build Wrapper : End
            [Pipeline] } //node
            [Pipeline] Allocate node : End
            [Pipeline] } //parallel
            

            and "little spinning icon"

            sorry my text decoration

            Show
            vakulenko_alex Aleksei Vakulenko added a comment - - edited I think problem not only this plugin, but in some plugin of Pipeline v 1.15. Version of Windows - 7 64 bit SP1. In example program 1c.exe replaced 7z.exe simple script on python: # coding: utf8 import subprocess import os import time def main(): call_string = 'C:\\Program Files\\7-Zip\\7z.exe t ' + os.getcwd() + '\\Empty.7z' print(call_string) subprocess.call(call_string) time.sleep(10) if __name__ == '__main__' : main() workflow script for test: node{ wrap([$class: 'TimestamperBuildWrapper' ]) { stash includes: 'Python.py, Empty.7z' , name: 'zip' timeout(10) { bat 'python python.py' } } } parallel Branch1: { node { wrap([$class: 'TimestamperBuildWrapper' ]) { unstash 'zip' timeout(10) { bat 'python python.py' } } } },Branch2: { node { wrap([$class: 'TimestamperBuildWrapper' ]) { unstash 'zip' timeout(10) { bat 'python python.py' } } } } failFast: false workflow log: [Pipeline] Allocate node : Start Running on мастер in C:\Jenkins\workspace\UT_Develop [Pipeline] node { [Pipeline] General Build Wrapper : Start [Pipeline] wrap { [Pipeline] stash 19:31:21 Stashed 1 file(s) [Pipeline] Enforce time limit : Start [Pipeline] timeout { [Pipeline] bat 19:31:21 [UT_Develop] Running batch script 19:31:21 19:31:21 C:\Jenkins\workspace\UT_Develop>python python.py 19:31:21 19:31:21 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 19:31:21 19:31:21 19:31:21 Error: 19:31:21 cannot find archive 19:32:28 C:\Program Files\7-Zip\7z.exe t C:\Jenkins\workspace\UT_Develop\Empty.7z [Pipeline] } //timeout [Pipeline] Enforce time limit : End [Pipeline] } //wrap [Pipeline] General Build Wrapper : End [Pipeline] } //node [Pipeline] Allocate node : End [Pipeline] Execute in parallel : Start [Pipeline] [Branch1] parallel { (Branch: Branch1) [Pipeline] [Branch2] parallel { (Branch: Branch2) [Pipeline] [Branch1] Allocate node : Start [Branch1] Running on мастер in C:\Jenkins\workspace\UT_Develop [Pipeline] [Branch2] Allocate node : Start [Branch2] Running on мастер in C:\Jenkins\workspace\UT_Develop@2 [Pipeline] [Branch1] node { [Pipeline] [Branch2] node { [Pipeline] [Branch1] General Build Wrapper : Start [Pipeline] [Branch1] wrap { [Pipeline] [Branch2] General Build Wrapper : Start [Pipeline] [Branch2] wrap { [Pipeline] [Branch1] unstash [Pipeline] [Branch2] unstash [Pipeline] [Branch1] Enforce time limit : Start [Pipeline] [Branch1] timeout { [Pipeline] [Branch2] Enforce time limit : Start [Pipeline] [Branch2] timeout { [Pipeline] [Branch1] bat 19:32:29 [Branch1] [UT_Develop] Running batch script [Pipeline] [Branch2] bat 19:32:29 [Branch1] 19:32:29 [Branch1] C:\Jenkins\workspace\UT_Develop>python python.py 19:32:29 [Branch1] 19:32:29 [Branch1] 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 19:32:29 [Branch1] 19:32:29 [Branch1] 19:32:29 [Branch1] Error: 19:32:29 [Branch1] cannot find archive 19:32:29 [Branch2] [UT_Develop@2] Running batch script 19:32:29 [Branch2] 19:32:29 [Branch2] C:\Jenkins\workspace\UT_Develop@2>python python.py 19:32:29 [Branch2] 19:32:29 [Branch2] 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 19:32:29 [Branch2] 19:32:29 [Branch2] 19:32:29 [Branch2] Error: 19:32:29 [Branch2] cannot find archive 19:33:37 [Branch1] C:\Program Files\7-Zip\7z.exe t C:\Jenkins\workspace\UT_Develop\Empty.7z 19:33:37 [Branch2] C:\Program Files\7-Zip\7z.exe t C:\Jenkins\workspace\UT_Develop@2\Empty.7z [Pipeline] } //timeout [Pipeline] Enforce time limit : End [Pipeline] } //wrap [Pipeline] General Build Wrapper : End [Pipeline] } //node [Pipeline] Allocate node : End [Pipeline] } //parallel and "little spinning icon" sorry my text decoration
            Hide
            saucistophe Christophe Carpentier added a comment - - edited

            Same here, using a ant file.

            The groovy script:

            node
            {
                def antHome = tool 'Ant'
                
                stage '32 bits'
                wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm', 'defaultFg': 1, 'defaultBg': 2]) {
                    bat "${antHome}/bin/ant.bat build-all -Dplatform=Win32" 
                }
            }
            

            The ant file, reduced to a SSCCE (though requiring AntLibs):

            <?xml version="1.0"?>
            <project name="Minimal JENKINS-33456" basedir=".">
            
            	<taskdef resource="net/sf/antcontrib/antlib.xml" />
            	
            	<target name="compile">
            		<exec executable="AnExecThatDontExist" spawn="false" failonerror="true"></exec>
            	</target>
            	
            	<target name="build-all">
            		<antcallback target="compile"></antcallback>
            	</target>
            </project>
            

            Please note that switching the highlighted failonerror parameter to false solves the problem. The true setting must trigger some kind of exit /b.

            Show
            saucistophe Christophe Carpentier added a comment - - edited Same here, using a ant file. The groovy script: node { def antHome = tool 'Ant' stage '32 bits' wrap([$class: 'AnsiColorBuildWrapper' , 'colorMapName' : 'XTerm' , 'defaultFg' : 1, 'defaultBg' : 2]) { bat "${antHome}/bin/ant.bat build-all -Dplatform=Win32" } } The ant file, reduced to a SSCCE (though requiring AntLibs): <?xml version= "1.0" ?> <project name= "Minimal JENKINS-33456" basedir= "." > <taskdef resource= "net/sf/antcontrib/antlib.xml" /> <target name= "compile" > <exec executable= "AnExecThatDontExist" spawn= "false" failonerror= "true" > </exec> </target> <target name= "build-all" > <antcallback target= "compile" > </antcallback> </target> </project> Please note that switching the highlighted failonerror parameter to false solves the problem. The true setting must trigger some kind of exit /b.
            Hide
            danielweber Daniel Weber added a comment -

            We also encountered problems where bat steps dis not finish. It looked like the result.txt file that Jenkins is waiting for was never created although the batch scripts were done. The 2 .bat files and log file existed in the "...@tmp" folder.

            Downgrading durable-tasks to 1.7 helped.

            Running Jenkins 1.625.3 under Windows Server 2008 R2, pipeline plugins versions 1.14.

            Show
            danielweber Daniel Weber added a comment - We also encountered problems where bat steps dis not finish. It looked like the result.txt file that Jenkins is waiting for was never created although the batch scripts were done. The 2 .bat files and log file existed in the "...@tmp" folder. Downgrading durable-tasks to 1.7 helped. Running Jenkins 1.625.3 under Windows Server 2008 R2, pipeline plugins versions 1.14.
            Hide
            saucistophe Christophe Carpentier added a comment -

            I've read this issue history, and man, this doesn't look easy.
            Might I suggest using START /wait as an alternative to CALL, and use %ERRORLEVEL% to retrieve the result?
            Source: http://stackoverflow.com/questions/13257571/call-command-vs-start-with-wait-option

            I'd also suggest a kind of unit-test-job that does all kind of calls, start, cmds... and check in which case you manage to get the result; in any case it should not hang.

            Show
            saucistophe Christophe Carpentier added a comment - I've read this issue history, and man, this doesn't look easy. Might I suggest using START /wait as an alternative to CALL, and use %ERRORLEVEL% to retrieve the result? Source: http://stackoverflow.com/questions/13257571/call-command-vs-start-with-wait-option I'd also suggest a kind of unit-test-job that does all kind of calls, start, cmds... and check in which case you manage to get the result; in any case it should not hang.
            Hide
            saucistophe Christophe Carpentier added a comment -

            Still present in 2.0-rc.
            Jesse Glick and Aleksei Vakulenko, I don't understand why this issue is a blocker, and yet it doesn't seem to hinder the promotion of the version from beta to RC.
            And please don't tell us we can work around it by changing the way our bats are called: I'm not going to change all my Ant scripts, then change again the next time you revert to the other way!

            Plus, you never know how third party tools may call other exes. One day or another it'll blow.

            Anyway, as far as I'm concerned: I'm really eager to test J2.0, but this is a no-go...

            Show
            saucistophe Christophe Carpentier added a comment - Still present in 2.0-rc. Jesse Glick and Aleksei Vakulenko , I don't understand why this issue is a blocker, and yet it doesn't seem to hinder the promotion of the version from beta to RC. And please don't tell us we can work around it by changing the way our bats are called: I'm not going to change all my Ant scripts, then change again the next time you revert to the other way! Plus, you never know how third party tools may call other exes. One day or another it'll blow. Anyway, as far as I'm concerned: I'm really eager to test J2.0, but this is a no-go...
            Hide
            saucistophe Christophe Carpentier added a comment -

            I've run some additionnal tests, the AnsiColorBuildWrapper may be at fault.
            Thus, this simple ant file sufices:

            <?xml version="1.0"?>
            <project name="Minimal JENKINS-33456" basedir="." default="build">
            	<target name="build">
            		<fail/>
            	</target>
            </project>
            

            I'll disable the color ansi codes for now, but hey.

            Show
            saucistophe Christophe Carpentier added a comment - I've run some additionnal tests, the AnsiColorBuildWrapper may be at fault. Thus, this simple ant file sufices: <?xml version= "1.0" ?> <project name= "Minimal JENKINS-33456" basedir= "." default= "build" > <target name= "build" > <fail/> </target> </project> I'll disable the color ansi codes for now, but hey.
            Hide
            saucistophe Christophe Carpentier added a comment -

            Disabling the wrapper did no good. I've put all our current ant tasks in a script and tried it, it freeze on success too.
            I think my particular issue might be closer to JENKINS-33164.

            Show
            saucistophe Christophe Carpentier added a comment - Disabling the wrapper did no good. I've put all our current ant tasks in a script and tried it, it freeze on success too. I think my particular issue might be closer to JENKINS-33164 .
            jglick Jesse Glick made changes -
            Labels plugin workflow windows workflow
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 169377 ] JNJira + In-Review [ 183475 ]
            abayer Andrew Bayer made changes -
            Labels windows workflow pipeline windows workflow
            abayer Andrew Bayer made changes -
            Labels pipeline windows workflow pipeline windows
            Hide
            hrmpw Patrick Wolf added a comment -

            Can you upgrade to the latest version of this plugin and reproduce?

            Show
            hrmpw Patrick Wolf added a comment - Can you upgrade to the latest version of this plugin and reproduce?
            hrmpw Patrick Wolf made changes -
            Link This issue is related to JENKINS-34150 [ JENKINS-34150 ]
            Hide
            saucistophe Christophe Carpentier added a comment -

            Patrick Wolf In case you're asking me, my particular issue was fixed by JENKINS-34150.

            Show
            saucistophe Christophe Carpentier added a comment - Patrick Wolf In case you're asking me, my particular issue was fixed by JENKINS-34150 .
            Hide
            hrmpw Patrick Wolf added a comment -

            Thanks for the update Christophe Carpentier.

            I should have been more specific. I was asking Aleksei Vakulenko who opened the ticket. There are 7 or so tickets open against Durable Task hanging on bat steps. I want to confirm that they are all fixed by JENKINS-34150 so we can start closing some of them out.

            Show
            hrmpw Patrick Wolf added a comment - Thanks for the update Christophe Carpentier . I should have been more specific. I was asking Aleksei Vakulenko who opened the ticket. There are 7 or so tickets open against Durable Task hanging on bat steps. I want to confirm that they are all fixed by JENKINS-34150 so we can start closing some of them out.
            Hide
            vakulenko_alex Aleksei Vakulenko added a comment -

            Now I use Durable Task Plugin v 1.12.
            All fixed.
            Thank you.

            Show
            vakulenko_alex Aleksei Vakulenko added a comment - Now I use Durable Task Plugin v 1.12. All fixed. Thank you.
            Hide
            jglick Jesse Glick added a comment -

            Then it is probably a duplicate. Thanks for confirming.

            Show
            jglick Jesse Glick added a comment - Then it is probably a duplicate. Thanks for confirming.
            jglick Jesse Glick made changes -
            Status Open [ 1 ] Resolved [ 5 ]
            Resolution Duplicate [ 3 ]

              People

              • Assignee:
                jglick Jesse Glick
                Reporter:
                vakulenko_alex Aleksei Vakulenko
              • Votes:
                4 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: