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

UnsupportedOperationException when trying to addAction in jenkins pipeline

    • Icon: Bug Bug
    • Resolution: Not A Defect
    • Icon: Minor Minor
    • core, pipeline
    • Jenkins 2.222.3
      pipeline 2.6
      pipeline api 2.40
      pipeline basic steps 2.20
      pipeline groovy 2.80
      pipeline shared libraries 2.16

      java 1.8.0_242

      We created a new Action in our shared libraries repository:

       

      public MyAction implements PersistentAction, Serializable {
      private String myString;
      //constructor
       //methods
       ...
       }
      
      

      Then we tried to use it in a pipeline like this:

      MyAction action = new MyAction("aaaa")
      currentBuild.rawBuild.addAction(action)

      The build failed with the following error:

      java.lang.UnsupportedOperationException: Refusing to marshal com.myCompany.ci.CompareReportAction for security reasons; see 
       https://jenkins.io/redirect/class-filter/
       at hudson.util.XStream2$BlacklistedTypesConverter.marshal(XStream2.java:541)
       at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
       at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
       at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
       at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:88)
       at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:64)
       at com.thoughtworks.xstream.converters.collections.CollectionConverter.marshal(CollectionConverter.java:74)
       at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
       at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
       at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:84)
       at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:262)
       at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:249)
       Caused: java.lang.RuntimeException: Failed to serialize hudson.model.Actionable#actions for class org.jenkinsci.plugins.workflow.job.WorkflowRun
       at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:253)
       at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:221)
       at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:138)
       at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:207)
       at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:148)
       at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
       at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
       at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
       at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:82)
       at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37)
       at com.thoughtworks.xstream.XStream.marshal(XStream.java:1026)
       at com.thoughtworks.xstream.XStream.marshal(XStream.java:1015)
       at com.thoughtworks.xstream.XStream.toXML(XStream.java:988)
       at hudson.util.XStream2.toXMLUTF8(XStream2.java:313)
       at org.jenkinsci.plugins.workflow.support.PipelineIOUtils.writeByXStream(PipelineIOUtils.java:34)
       at org.jenkinsci.plugins.workflow.job.WorkflowRun.save(WorkflowRun.java:1158)
       at hudson.BulkChange.commit(BulkChange.java:98)
       at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.notifyListeners(CpsFlowExecution.java:1475)
       at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$3.run(CpsThreadGroup.java:488)
       at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.run(CpsVmExecutorService.java:38)
       at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
       at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
       at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
       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)

      any workaround?

      Is it possible at all to add a custom action like this (class from shared libraries)?

       

          [JENKINS-65539] UnsupportedOperationException when trying to addAction in jenkins pipeline

          Daniel Puiu added a comment -

          Hello,
          I have the same issue.
          I tried to start the jenkins instance with -Dhudson.remoting.ClassFilter=<full class name> but it doesn't work.
          jglick is there any way to create custom actions in the shared libraries?
          Thanks,
          Regards

          Daniel Puiu added a comment - Hello, I have the same issue. I tried to start the jenkins instance with -Dhudson.remoting.ClassFilter=<full class name> but it doesn't work. jglick is there any way to create custom actions in the shared libraries? Thanks, Regards

          Jesse Glick added a comment -

          No there is not, and you should be trying to. Libraries are intended as ways to gather together common idioms which would otherwise be spelled out in Jenkinsfile’s. They are not a replacement for plugins.

          Jesse Glick added a comment - No there is not, and you should be trying to. Libraries are intended as ways to gather together common idioms which would otherwise be spelled out in Jenkinsfile ’s. They are not a replacement for plugins.

            Unassigned Unassigned
            tizkiko Tidhar Klein Orbach
            Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: