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

PerformancePlugin: DateFormat Marshal Exceptions still occur

XMLWordPrintable

      Running Jenkins 2.319.2 with Performance Plugin 3.20. Sporadically I am still getting the JEP-200 related security exception:

      java.lang.UnsupportedOperationException: Refusing to marshal java.text.SimpleDateFormat for security reasons; see https://www.jenkins.io/redirect/class-filter/
      	at hudson.util.XStream2$BlacklistedTypesConverter.marshal(XStream2.java:559)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
      	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
      	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:278)
      	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:265)
      Caused: java.lang.RuntimeException: Failed to serialize hudson.plugins.performance.parsers.AbstractParser#format for class hudson.plugins.performance.parsers.JMeterCsvParser
      	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:269)
      	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:236)
      	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:174)
      	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:221)
      	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:160)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
      	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:87)
      	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeBareItem(AbstractCollectionConverter.java:94)
      	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:66)
      	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeCompleteItem(AbstractCollectionConverter.java:81)
      	at com.thoughtworks.xstream.converters.collections.CollectionConverter.marshal(CollectionConverter.java:74)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
      	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
      	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:278)
      	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:265)
      Caused: java.lang.RuntimeException: Failed to serialize hudson.plugins.performance.actions.PerformanceBuildAction#parsers for class hudson.plugins.performance.actions.PerformanceBuildAction
      	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:269)
      	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:236)
      	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:174)
      	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:221)
      	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:160)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
      	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:87)
      	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeBareItem(AbstractCollectionConverter.java:94)
      	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:66)
      	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeCompleteItem(AbstractCollectionConverter.java:81)
      	at com.thoughtworks.xstream.converters.collections.CollectionConverter.marshal(CollectionConverter.java:74)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
      	at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83)
      	at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:278)
      	at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:265)
      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:269)
      	at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:236)
      	at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:174)
      	at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:221)
      	at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:160)
      	at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
      	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:1243)
      	at com.thoughtworks.xstream.XStream.marshal(XStream.java:1232)
      	at com.thoughtworks.xstream.XStream.toXML(XStream.java:1205)
      	at hudson.util.XStream2.toXMLUTF8(XStream2.java:325)
      	at org.jenkinsci.plugins.workflow.support.PipelineIOUtils.writeByXStream(PipelineIOUtils.java:34)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun.save(WorkflowRun.java:1218)
      	at hudson.BulkChange.commit(BulkChange.java:97)
      	at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.notifyListeners(CpsFlowExecution.java:1485)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$3.run(CpsThreadGroup.java:491)
      	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.run(CpsVmExecutorService.java:38)
      	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
      	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      	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 

      when running pipeline command

      perfReport sourceDataFiles: 'testautomation/*/reports/*.jtl', compareBuildPrevious: true, failBuildIfNoResultFile: false, ignoreFailedBuilds: false, errorFailedThreshold: 1 

      It does not happen with every build. I haven't figured out yet why that actually is. In general, however, there still seems to be an issue here. Unfortunately, this breaks my builds and causes issues in daily operations.


      Interestingly, commit

      https://github.com/jenkinsci/performance-plugin/commit/9b38268c10c1642c753e7a9a2b3216e4336db496

      was suposed to fix this bug by introducing the "transient" field for date format. After a while this commit removed the transient field again:
      https://github.com/jenkinsci/performance-plugin/commit/e77ea040d7f172a2b8ff56ac2b1c5a8828536941

      So, which one is correct?

            undera Andrey Pokhilko
            lehmann_kai Kai Lehmann
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: