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.
