You are right. 

Adding a lot of println debug lines I have realized that the error it was 
not at the piece of code I have posted here but other .execute() which 
whose output was not being consumed and it was blocking the flow.

Thank you all for the tips.

El martes, 9 de junio de 2020, 15:00:26 (UTC+2), Devin Nusbaum escribió:
>
> The method named `exists` from the first email is fine and does not have 
> any problems. Adding @NonCPS to it is incorrect as explained here 
> <https://www.jenkins.io/doc/book/pipeline/cps-method-mismatches/#use-of-pipeline-steps-fromnoncps>
>  and 
> causes the “expected to call Script4.exists but wound up catching sh” 
> warning.
>
> You mentioned using Groovy’s `String.execute()` extension method, which I 
> suspect is the real problem, because that method creates a 
> `java.lang.Process`, which cannot be serialized, and ends up stored as a 
> local variable in the Pipeline, which causes the original error you posted. 
> The Pipeline is serialized after steps execute (when using the default 
> MAX_SURVIVABILITY durability level), which is why you don’t see the error 
> until after the `sh` step runs.
>
> You should not call `String.execute` or other similar Java or Groovy 
> methods related to processes inside of a Pipeline, you should always use 
> the `sh` or `bat` steps. Methods related to `java.lang.Process` will always 
> execute the process on the master (which is probably not the behavior you 
> want), and they are not allowed in the sandbox by default because users can 
> use those methods to trivially bypass all security on the Jenkins master.
>
> On Jun 8, 2020, at 18:57, Slide <[email protected] <javascript:>> wrote:
>
> Can you share your Jenkinsfile? There may be some contextual information 
> that would help people help you.
>
> On Mon, Jun 8, 2020 at 3:08 PM chencho m-a <[email protected] 
> <javascript:>> wrote:
>
>> I altready tried this, with this output.
>>
>> expected to call Script4.exists but wound up catching sh; see: 
>> https://jenkins.io/redirect/pipeline-cps-method-mismatches/
>>
>> NOTE: if I use execute().text, instead of sh, it works fine.
>>
>>
>>
>>
>> El lunes, 8 de junio de 2020, 19:42:15 (UTC+2), Jérôme Godbout escribió:
>>>
>>> Yet another case of @NonCPS, this serializable requirements for 
>>> functions is such a terrible idea, talk about tentacular requirements that 
>>> destroy standard calls. They should have put recovery point function, where 
>>> the context would have been saved and the script could add them as it 
>>> please, this would have prevent all this @NonCPS nightmare and lead to a 
>>> more standard code with standard groovy.
>>>  
>>>
>>> Add @NonCPS decorator to your functions:
>>>  
>>>
>>> @NonCPS
>>>
>>> def MyFct() {
>>>
>>>    … do your stuff here
>>>
>>> }
>>>  
>>>
>>> This prevent serialization of each actions into that functions.
>>>  
>>>
>>> *From:* [email protected] <[email protected]> *On 
>>> Behalf Of *chencho m-a
>>> *Sent:* June 8, 2020 5:19 AM
>>> *To:* Jenkins Users <[email protected]>
>>> *Subject:* java.io.NotSerializableException: java.lang.UNIXProcess
>>>  
>>>
>>> Hi all, 
>>>  
>>>
>>> I have a (I hope) stupid issue that i am not able to solve
>>>  
>>>
>>> I am calling to a method that only call a bash script like this.
>>>  
>>>
>>>
>>> def exists(path) {
>>>
>>>    try{
>>>
>>>            sh(script:'ls -l',
>>>
>>>            returnStdout: true).trim()
>>>
>>>            return false
>>>
>>>      } catch (err){ error "-E- Failed to run fs.exists(${path}), 
>>> Exception err: ${err}"}
>>>
>>> }
>>>  
>>>
>>>  
>>>
>>> And I am always getting this exception
>>>  
>>>
>>> *07**:**55**:**59*  java.io.NotSerializableException: java.lang.UNIXProcess
>>> [Pipeline] End of Pipeline
>>> an exception which occurred:
>>>         in field groovy.lang.Closure.delegate
>>>         in object org.jenkinsci.plugins.workflow.cps.CpsClosure2@5ac3f4cc
>>>         in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.closures
>>>         in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@239d9620
>>>         in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@239d9620
>>> Caused: java.io.NotSerializableException: java.lang.UNIXProcess
>>>         at 
>>> org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926)
>>>         at 
>>> org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
>>>         at 
>>> org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
>>>         at 
>>> org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
>>>         at 
>>> org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
>>>         at 
>>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)
>>>         at 
>>> java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:333)
>>>         at java.util.HashMap.writeObject(HashMap.java:1363)
>>>         at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
>>>         at 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>>
>>> ...
>>>  
>>>  
>>>
>>> Any clue?
>>>
>>> Jenkins 2.222.4
>>>  
>>>
>>> -- 
>>> 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/1c647bd5-c779-427a-bf98-1a61b5074b65o%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/jenkinsci-users/1c647bd5-c779-427a-bf98-1a61b5074b65o%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>> -- 
>> 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] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-users/ffbb95d8-8fa2-4401-8a75-5480a10fce1do%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jenkinsci-users/ffbb95d8-8fa2-4401-8a75-5480a10fce1do%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> Website: http://earl-of-code.com
>
> -- 
> 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] <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jenkinsci-users/CAPiUgVeZYcBrJa4yzNHf76i6xg3wRyZRFTDtg65oRWLFscR5Zg%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/jenkinsci-users/CAPiUgVeZYcBrJa4yzNHf76i6xg3wRyZRFTDtg65oRWLFscR5Zg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
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/08773ec8-202d-4c18-8da4-2306bc1d7b25o%40googlegroups.com.

Reply via email to