Thanks for the feedback everyone, it was quite helpful. Regards, Andres
On Thursday, October 15, 2015 at 2:00:22 PM UTC-4, Brian Ray wrote: > > See this earlier thread for the Iterator serialization issue: > > https://groups.google.com/d/msg/jenkinsci-users/LGRv7Jq60YI/ZN-68zuw2loJ > > On Wednesday, October 14, 2015 at 10:33:41 AM UTC-7, Michael Štědrý wrote: >> >> Hi Andres, >> >> I've got one more interesting thing for you. I managed to get your sample >> working even though I had to remove the functions: >> >> def testList = "test1 test2".split() >> def branches = [:] >> for (int i = 0; i < testList.length; i++) { >> def testName = testList[i]; >> branches[testName] = { >> echo testName >> sleep 20 >> } >> } >> parallel branches >> >> What I found out is that I couldn't use the nice for loop because it >> fails with: >> >> java.io.NotSerializableException: java.util.AbstractList$Itr >> >> ... >> >> Caused by: an exception which occurred: >> in field itr >> in field target >> in field continue_ >> in field parent >> in field capture >> in field def >> in field closures >> in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@8b36066 >> >> >> And when I put the creation of the branches in a function it started to >> behave strangely. >> >> >> On Sunday, September 27, 2015 at 10:25:47 PM UTC+2, Andres Rodriguez >> wrote: >>> >>> Hi Everyone, >>> >>> First of all, I want to say that I'm really enjoying the workflow >>> plugin. Thanks for all the effort in bringing this feature to production. >>> Specially loading the DSL file from a git repository allows us to auto-test >>> our changes to a job through the same mechanism that we test changes to the >>> code (using Gerrit). >>> >>> I'm currently encountering some weird behavior when generating a list of >>> tests parallel branches dynamically. I've boiled it down to the following >>> small test case that you can paste into the workflow script box: >>> >>> @NonCPS >>> def generateTestBranches (testList) { >>> def branches = [:] >>> for (testName in testList.split()) { >>> branches[testName] = { >>> echo testName >>> sleep 20 >>> } >>> } >>> return branches >>> } >>> >>> def runTests (testList) { >>> def testBranches = generateTestBranches(testList) >>> parallel testBranches >>> } >>> >>> runTests "test1 test2" >>> >>> The output of this job (it can't be aborted): >>> >>> Running: Execute sub-workflows in parallel : Start >>> [test1] Running: Parallel branch: test1 >>> Aborted by anonymous <http://krussell:8080/user/anonymous> >>> Aborted by anonymous <http://krussell:8080/user/anonymous> >>> Aborted by anonymous <http://krussell:8080/user/anonymous> >>> >>> >>> I've also tried replacing the "parallel testBranches" with a simple loop >>> to execute the closures in the map manually (my understanding is that >>> map.each is broken atm so I used a loop instead): >>> >>> for ( test in testBranches) { >>> echo "executing ${test.key}" >>> test.value() >>> } >>> >>> And the output is as follows (note that it prints test2 instead of test1 >>> from inside the closure): >>> >>> Started by user anonymous <http://krussell:8080/user/null> >>> Running: Print Message >>> executing test1 >>> Running: Print Message >>> test2 >>> Running: Print Message >>> executing test2 >>> Running: Print Message >>> test2 >>> Running: End of Workflow >>> Finished: SUCCESS >>> >>> >>> I'm not a Groovy expert (I just started learning for the workflow >>> plugin), so I might be doing something dumb here. I'm trying to read the >>> groovy docs to figure out if the way I'm generating the closure is an >>> issue. But overall the state the system gets into seems to be pretty bad >>> (can't abort the job). So I wanted to send out an email here just in case >>> this is a problem with the Jenkins groovy core. >>> >>> Thanks again for the constant improvements to the workflow plugin. >>> >>> Regards, >>> Andres >>> >>> >>> -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/f301bd0b-d892-4a59-9174-fbd45fe598d7%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
