• Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Minor Minor
    • workflow-cps-plugin
    • None

      I get java.io.NotSerializableException: java.util.regex.Matcher on:

      @NonCPS
      def extractLatency(linesArr) {
        latency = [:]
        println "extractLatency"
        for (int j = 0; j < linesArr.size(); j++) {
          line = linesArr[j]
          println("looping over line: $line")
          // Matches lines like: Connect:        0    1   0.1      1       1
          abPattern = /(\w+)\:\s+(\d+\.?\d*)\s+(\d+\.?\d*)\s+(\d+\.?\d*)\s+(\d+\.?\d*)\s+(\d+\.?\d*)/
      
          def matcher = { (line =~ abPattern) }
      
          if (matcher().size > 1) {
            println("matched")
          }
      
          matcher = null
          abPattern = null
        }
        return latency
      }
      

      If I throw a @NonCPS on the inner def matcher it fixes it.

          [JENKINS-35444] @NonCPS not lexically inherited

          Jesse Glick added a comment -

          I assume this was a prototype on the way to a working function, since latency seems to be left empty, and matcher could simply be inlined.

          Probably the issue is just that @NonCPS is not inherited lexically.

          Jesse Glick added a comment - I assume this was a prototype on the way to a working function, since latency seems to be left empty, and matcher could simply be inlined. Probably the issue is just that @NonCPS is not inherited lexically.

          Trevor Hartman added a comment - - edited

          Yes, the println("matched") was placeholder logic.

          matcher couldn't be inlined from my experience. It kept throwing java.io.NotSerializableException: java.util.regex.Matcher until I put it in a lambda with @NonCPS.

          Trevor Hartman added a comment - - edited Yes, the println("matched") was placeholder logic. matcher couldn't be inlined from my experience. It kept throwing java.io.NotSerializableException: java.util.regex.Matcher until I put it in a lambda with @NonCPS .

          Andrew Bayer added a comment -

          At least as of workflow-cps 2.41, this appears to work.

          Andrew Bayer added a comment - At least as of workflow-cps 2.41, this appears to work.

            Unassigned Unassigned
            devth Trevor Hartman
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: