• 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

          Trevor Hartman created issue -
          Andrew Bayer made changes -
          Assignee Original: Antonio Muñiz [ amuniz ] New: Andrew Bayer [ abayer ]
          Trevor Hartman made changes -
          Description Original: I get java.io.NotSerializableException: java.util.regex.Matcher on:

          {code:groovy}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          New: I get java.io.NotSerializableException: java.util.regex.Matcher on:

          {code:java}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          Andrew Bayer made changes -
          Component/s New: workflow-plugin [ 18820 ]
          Component/s Original: pipeline-milestone-step-plugin [ 21448 ]
          Description Original: I get java.io.NotSerializableException: java.util.regex.Matcher on:

          {code:java}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          New: I get java.io.NotSerializableException: java.util.regex.Matcher on:

          {code:groovy}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          Jesse Glick made changes -
          Description Original: I get java.io.NotSerializableException: java.util.regex.Matcher on:

          {code:groovy}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          New: I get {{java.io.NotSerializableException: java.util.regex.Matcher}} on:

          {code}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          Jesse Glick made changes -
          Description Original: I get {{java.io.NotSerializableException: java.util.regex.Matcher}} on:

          {code}
          @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
          }
          {code}

          If I throw a @NonCPS on the inner `def matcher` it fixes it.
          New: I get {{java.io.NotSerializableException: java.util.regex.Matcher}} on:

          {code}
          @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
          }
          {code}

          If I throw a {{@NonCPS}} on the inner {{def matcher}} it fixes it.
          Jesse Glick made changes -
          Summary Original: java.io.NotSerializableException issues even with @NonCPS New: @NonCPS not lexically inherited
          Jesse Glick made changes -
          Epic Link New: JENKINS-35390 [ 171183 ]
          Andrew Bayer made changes -
          Assignee Original: Andrew Bayer [ abayer ]
          R. Tyler Croy made changes -
          Workflow Original: JNJira [ 171741 ] New: JNJira + In-Review [ 184445 ]
          Andrew Bayer made changes -
          Component/s New: pipeline-general [ 21692 ]

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

              Created:
              Updated:
              Resolved: