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

Reader.forEachLine only reads first line

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Component/s: workflow-cps-plugin
    • Labels:
      None
    • Environment:
      workflow-cps-plugin 2.39
    • Similar Issues:

      Description

      Trying to run the docs example in pipeline script fails:

      def s = 'The 3 quick\nbrown 4 fox'
      def result = ''
      new StringReader(s).splitEachLine(/\d/){ parts ->
          result += "${parts[0]}_${parts[1]}|"
      }
      assert result == 'The _ quick|brown _ fox|'

      This results in

      hudson.remoting.ProxyException: Assertion failed: 
      
      assert result == 'The _ quick|brown _ fox|'
      
      	at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:404)
      	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:650)
      	at com.cloudbees.groovy.cps.impl.AssertBlock$ContinuationImpl.fail(AssertBlock.java:47)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      	at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
      	at com.cloudbees.groovy.cps.Next.step(Next.java:83)
      	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173)
      	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162)
      	at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
      	at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
      	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162)
      	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)
      	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
      	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Finished: FAILURE
      

      The value of result is just The _ quick|

        Attachments

          Issue Links

            Activity

            Hide
            abayer Andrew Bayer added a comment -

            Yeah, looks like we need to add IOGroovyMethods and ResourceGroovyMethods like StringGroovyMethods was added in JENKINS-46358.

            Show
            abayer Andrew Bayer added a comment - Yeah, looks like we need to add IOGroovyMethods and ResourceGroovyMethods like StringGroovyMethods was added in JENKINS-46358 .
            Hide
            jglick Jesse Glick added a comment -

            Hardly “critical” when the workaround is simple: use plain old Java Platform methods.

            Show
            jglick Jesse Glick added a comment - Hardly “critical” when the workaround is simple: use plain old Java Platform methods.
            Hide
            jbochenski Jakub Bochenski added a comment -

            Jesse Glick I mirrored the severity of https://issues.jenkins-ci.org/browse/JENKINS-46749
            Anyhow I think it's nasty because it fails silently.

            While we wait for this to be fixed it would be nice to have some kind of guard that will detect this and throw instead of returning the result of processing only one line.
            It is rather confusing for out users to have to remember which groovy constructs are supported and which arent

            Show
            jbochenski Jakub Bochenski added a comment - Jesse Glick I mirrored the severity of https://issues.jenkins-ci.org/browse/JENKINS-46749 Anyhow I think it's nasty because it fails silently. While we wait for this to be fixed it would be nice to have some kind of guard that will detect this and throw instead of returning the result of processing only one line. It is rather confusing for out users to have to remember which groovy constructs are supported and which arent
            Hide
            jglick Jesse Glick added a comment -

            That is already a filed RFE.

            Show
            jglick Jesse Glick added a comment - That is already a filed RFE.

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              jbochenski Jakub Bochenski
              Votes:
              2 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated: