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

Groovy list keySet() method crashes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • groovy-plugin
    • None

      I'm using this script, which works properly on the groovy commandline interpreter:

      def testCaseSets = [
      'config.upgrade.authentication.authentication_parameters.arangobench': [ ""],
      'dump.importing': ["", "--cluster true"],
      'shell_server': ["",
      "--cluster true --testBuckets 4/1 ",
      "--cluster true --testBuckets 4/2 ",
      "--cluster true --testBuckets 4/3 ",
      "--cluster true --testBuckets 4/4 "],
      'shell_server_aql': ["",
      "--cluster true --testBuckets 4/1 ",
      "--cluster true --testBuckets 4/2 ",
      "--cluster true --testBuckets 4/3 ",
      "--cluster true --testBuckets 4/4 "],
      'arangosh': ["",
      "--cluster true --testBuckets 4/1 ",
      "--cluster true --testBuckets 4/2 ",
      "--cluster true --testBuckets 4/3 ",
      "--cluster true --testBuckets 4/4 "],
      ]

      print("getting keyset\n")
      testCaseNames = testCaseSets.keySet()
      print("done keyset is: ${testCaseNames}\n")
      m = testCaseNames.size()
      print("size: ${m}\n")
      int n = 0;
      for (int i = 0; i < m; i++) {
      print("in loop\n")
      def unitTestName = testCaseNames.getAt;
      print("unitTestName: ${unitTestName}\n")
      def thisTest = testCaseSets[unitTestName]
      print( "generating short name:\n")
      def shortName = unitTestName.take(12)
      print("generated short name: ${shortName}\n")
      }

      Using it in the jenkins pipeline script will make testCaseSets.keySet() throw this ecxeption:

      [Pipeline] stage
      [Pipeline]

      { (cloning source) [Pipeline] echo getting keyset [Pipeline] echo done keyset is: [config.upgrade.authentication.authentication_parameters.arangobench, dump.importing, shell_server, shell_server_aql, arangosh] [Pipeline] echo size: 5 [Pipeline] }

      [Pipeline] // stage
      [Pipeline] End of Pipeline
      java.io.NotSerializableException: java.util.HashMap$KeySet
      at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
      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:343)
      at java.util.HashMap.writeObject(HashMap.java:1129)
      at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:271)

      ...

      Caused by: an exception which occurred:
      in field delegate
      in field closures
      in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@69005cb8

            vjuranek vjuranek
            dothebart Wilfried Goesgens
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: