-
Bug
-
Resolution: Cannot Reproduce
-
Minor
-
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.
- is related to
-
JENKINS-38199 Allow native as an alias for @NonCPS
-
- Open
-
[JENKINS-35444] @NonCPS not lexically inherited
Assignee | Original: Antonio Muñiz [ amuniz ] | New: Andrew Bayer [ abayer ] |
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. |
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. |
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. |
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. |
Summary | Original: java.io.NotSerializableException issues even with @NonCPS | New: @NonCPS not lexically inherited |
Epic Link | New: JENKINS-35390 [ 171183 ] |
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.